All Classes and Interfaces
Class
Description
AbstractDocument
aims to provide a consistent way to handle hierarchical and tree-like data structure
without losing the type safety of the languageAbstractFactory
is used when we need to isolate the object creation with group of dependant objectsAdapter
is used to adapt two different object when client has one object
and our api expects a different objectAmbassador
is used to offload the common functionality like logging, retry, etc., away from the
shared legacy application into the client code itself.Bridge
is used when we want to isolate the implementation LinkedList
with the abstraction FIFOCollection
Builder
is used when the constructor is complex or object creation has multiple stepsBusinessDelegate
is used to add an abstraction layer between presentation tier and business tierChainOfResponsibility
will be used to decouple the sender of request and the handler of request so that
multiple handler can process the request and then pass the request to next handlerCommand
will be used to replace a method with an object and parameters by the object fields so that we can
handle them in after some time or make another thread execute it.Composite
is used to handle the parent node and leaf node as same for the clientCompositeEntity
allows a set of related objects to be represented and managed by a unified objectDecorator
is used to add a simple functionality to existing classes without changing the total behaviorFacade
is to create a simple use-case interface which can be directly used by the user without knowing/implementing
all related classes needed for that use-case by the user.FactoryMethod
will have individual factory method classes
XMLMessageMessageFactoryMethod
, JSONMessageMessageFactoryMethod
for every instances needed XMLMessage
, JSONMessage
and we cannot
go with SimpleFactory
since the Message
might be extended by different
concrete classes in the futureFlyweight
is used when we can split the object as intrinsic (shared by all instances) and
extrinsic (context based values which will be taken care by the client) valuesInterpreter
is used when it is needed to process a simple language with rules or grammarIterator
is used to iterate sequentially over aggregate objects without
exposing the internal collection usedMediator
is used to decouple the communication between the objects and
let mediator object to handle the communication between group of objectsNullObject
is used to represent absence of real object as a do nothing objectObjectPool
is used when the object creation is costly, so we have already created
a pool of objects which can be reusedObserver
is used to define one-to-many dependency between objects which are interested in the state of objectProxy
is used to act as a stand-in instance for the real instance.SimpleFactory
is used to move the object creation in a separate method.Singleton
is used when there should be only one instance of the that classState
is used when the behaviour of the object is completely depend on the internal state of the objectStrategy
is used to encapsulate the algorithms in different classes which can be configured in the context classTemplateMethod
is used to define the skeleton of algorithm in base class and which can be implemented in steps on the subclassesVisitor
is used to add new operations that work on objects without modifying class definitions