Design patterns

Design patterns

codingart

Creational designs

  • Factory method

    Abstract class that requires subclasses to implement a function that return abstract object.

    Name meaning + example: Factory (abstract method) that create product (abstract object).

  • Abstract factory

    Abstruct class that requires subclasses to implement set of functions that return abstract objects.

    Name meaning: factory is a class that contains number of fatroy methods….

  • Singleton

    Can have just one instance from class.

    Name meaning + examlpe: singleton == single one.

  • Builder

    Build an object from number of objects \ in stages (from outside the builded object).

    Name meaning + examlpe: builder == build the object, object that build the object in stages from outside.

Structural designs

  • Adapter

    Corelate between two unmatched APIs.

    Name meaning + examlpe: adapt between un matched interfaces / APIs…

  • Proxy

    Corelate API to new ProxyAPI with access / security / limitations control.

    Name meaning + examlpe: Proxy server is a standalone security/access entity between interfaces….

  • Façade

    Corelate API to new FacadeAPI with simple and useable interface to the user.

    Name meaning + examlpe: Facade, close to Decorated, but more fixed and not dynamic.

  • Flyweights

    Memory smart managment by sharing memory between objects.

    Name meaning + examlpe: light use of memory so flyweight.

  • Composite

    Tree like structure that every object can be for himself or as big part that contain objects from same type. Recuratsion types.

    Name meaning + examlpe: Object that is composite from same type objects.

Behavioural designs

  • Mediator

    Object that orchestrates between other objects flow.

    Name meaning + example: As mediator the job of the object is to mediate and set communication between other objects.

  • Observer

    Objects look at other object state in order to function based on its state and flow.

    Name meaning + example: As observer, object look at other objects state and flow in order to set its flow.

  • Strategy

    Let you define a set of algorithms.
    Strategy design pattern implements regular inheritance in order to simplify class that does something specific in a lot of different ways by extract all of these different algorithms into separate classes called strategies.
    The abstract class have one function with desired signature in order to allow generic use of different instance algorithms to the same algorithmic problem.

    Name meaning + example: General strategy as a solution for certain problem.
    Find sorted list problem - the general strategy will get a list and will return a sorted list, there are many maney different strategy implementations.

  • Template method

    Like strategy design pattern, the difference is that the main function should be more structured, calling set of stages methods that need to be implemented.

  • Name meaning + example: Template of method flow. Startup object run_startup method will call market_research method and than competition_analysis and than solution_building.

  • Visitor

    Alter different object in order to add functionality from outside of the object.

    Name meaning + example: Visit other objects, Dog class shouldn't have method routine test with an injection, in replace we crate a veterinarian visitor class that will visit the dog class ind will implment this method on him…..