Balking pattern
From Wikipedia, the free encyclopedia
The balking pattern is a concurrency pattern that only executes an action on an object when the object is in a particular state. For example, if an object reads ZIP files and a calling method invokes a get method on the object when the ZIP file is not open, the object would "balk" at the request. In the Java programming language, for example, an IllegalStateException might be thrown under these circumstances. In C# it would be InvalidOperationException.
There are some specialists[who?] in this field who consider balking more of an anti-pattern than a design pattern. If an object cannot support its API, it should either limit the API so that the offending call is not available, or so that the call can be made without limitation. It should:
- Be created in a "sane state";[further explanation needed]
- not make itself available until it is in a sane state;
- become a facade and answer back an object that is in a sane state.
Objects that use this pattern are generally only in a state that is prone to balking temporarily but for an unknown amount of time.[citation needed] If objects are to remain in a state which is prone to balking for a known, finite period of time, then the guarded suspension pattern may be preferred.