<Tr> <Td> Proxy </Td> <Td> Provide a surrogate or placeholder for another object to control access to it . </Td> <Td> Yes </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Twin </Td> <Td> Twin allows modeling of multiple inheritance in programming languages that do not support this feature . </Td> <Td> No </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Table> <Tr> <Th> Name </Th> <Th> Description </Th> <Th> In Design Patterns </Th> <Th> In Code Complete </Th> <Th> Other </Th> </Tr> <Tr> <Td> Blackboard </Td> <Td> Artificial intelligence pattern for combining disparate sources of data (see blackboard system) </Td> <Td> No </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Chain of responsibility </Td> <Td> Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request . Chain the receiving objects and pass the request along the chain until an object handles it . </Td> <Td> Yes </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Command </Td> <Td> Encapsulate a request as an object, thereby allowing for the parameterization of clients with different requests, and the queuing or logging of requests . It also allows for the support of undoable operations . </Td> <Td> Yes </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Interpreter </Td> <Td> Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language . </Td> <Td> Yes </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Iterator </Td> <Td> Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation . </Td> <Td> Yes </Td> <Td> Yes </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Mediator </Td> <Td> Define an object that encapsulates how a set of objects interact . Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it allows their interaction to vary independently . </Td> <Td> Yes </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Memento </Td> <Td> Without violating encapsulation, capture and externalize an object's internal state allowing the object to be restored to this state later . </Td> <Td> Yes </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Null object </Td> <Td> Avoid null references by providing a default object . </Td> <Td> No </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Observer or Publish / subscribe </Td> <Td> Define a one - to - many dependency between objects where a state change in one object results in all its dependents being notified and updated automatically . </Td> <Td> Yes </Td> <Td> Yes </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Servant </Td> <Td> Define common functionality for a group of classes . </Td> <Td> No </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Specification </Td> <Td> Recombinable business logic in a Boolean fashion . </Td> <Td> No </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> State </Td> <Td> Allow an object to alter its behavior when its internal state changes . The object will appear to change its class . </Td> <Td> Yes </Td> <Td> No </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Strategy </Td> <Td> Define a family of algorithms, encapsulate each one, and make them interchangeable . Strategy lets the algorithm vary independently from clients that use it . </Td> <Td> Yes </Td> <Td> Yes </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Template method </Td> <Td> Define the skeleton of an algorithm in an operation, deferring some steps to subclasses . Template method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure . </Td> <Td> Yes </Td> <Td> Yes </Td> <Td> N / A </Td> </Tr> <Tr> <Td> Visitor </Td> <Td> Represent an operation to be performed on the elements of an object structure . Visitor lets a new operation be defined without changing the classes of the elements on which it operates . </Td> <Td> Yes </Td> <Td> No </Td> <Td> N / A </Td> </Tr> </Table> <Tr> <Th> Name </Th> <Th> Description </Th> <Th> In Design Patterns </Th> <Th> In Code Complete </Th> <Th> Other </Th> </Tr>

Design pattern does not follow the concept of software reuse