Software Design Pattern





  • Structural Patterns (design patterns that describe how objects are connected to one another.) :-
    • Adapter:-
      • a design pattern that connects two incompatible interfaces by fitting between them and providing a compatible interface to both.
      • Example
    • Bridge (abstraction++):-
      • decouple an abstraction from its implementation
    • Composite:-
    • Decorator (Wrapper):-
      • the decorator pattern is a design pattern that allows behavior to be added to an individual object, dynamically, without affecting the behavior of other objects from the same class.
      • Attaches additional responsibilities to an object dynamically.
      • Provide a flexible alternative to sub-classing for extending functionality.
      • Example: http://www.itlec.com/2019/06/decorator-design-pattern-example.html
    • Facade:-
      • a design pattern that involves encapsulating a complex system in a simple interface.
    • Flyweight:-
      • A space optimization technique that lets us use less memory by storing externally the data associated with similar objects.
      • Use it when one instance of a class can be used to provide virtual instances.
      • Save memory.
    • Front Controller.
    • Marker.
    • Proxy
    • Twin
    • Anti-Corruption Layer:-

  • Behavioral Patterns (design patterns that focus on how objects distribute work.):-
    • Blackboard.
    • Chain of responsibility:-
    • Command:-
    • Interpreter:-
      • Compiler
      • Business Rule Engine
      • http://www.itlec.com/2019/08/business-rule-engine-linq-expression.html
    • Iterator.
    • Mediator:-
      • a behavioral pattern in which a central object coordinates the activities of many objects.
      • For Example: Chat room, Broker 
    • Null Object.
    • Observer:-
      • a behavioural pattern for event handling.
    • Publish / Subscribe 
    • Servant.
    • State:-
      • a behavioural pattern for handling requests taking into account the current state of the object.
    • Strategy(aka Policy pattern):-
      • a class behavior or its algorithm can be changed at run time.
      • Instead of using inheritance, you can use behavior interface variable and add setter to those variables.  
    • Rule Design Pattern:-
      • Most popular example is "Discount example".
    • Template Method:-
    • Visitor:-
      • Use it when you want to add capabilities to a a composite of objects and encapsulation is not important.
      • http://www.itlec.com/2021/01/visitor-design-pattern.html
    • Memento:-
      • provides the ability to restore an object to its previous state.
      • Examples:-
        • Undo, Restore.
    • Provider Pattern :- create pluggable components.
    • Context object Design Pattern
    • Unit of Work Pattern: usually work with repository pattern to apply set of actions on each CURD operation.

  • Concurrency Patterns:-
    • Active Object. (Actor, Concurrent Object) - Behavioural patter.
      • https://www.dre.vanderbilt.edu/~schmidt/PDF/Act-Obj.pdf
    • Balking.
    • Block Chain.
    • Double-Checked Locking.
    • Event-based asynchronous.
    • Join
    • Lock.
    • Monitor Object.
    • Reactor.
    • Read-Write Lock.
    • Scheduler.
    • Thread Pool.
    • Task-based asynchronous:-
      • await/ async


  • Data Access Patterns:-
    • Repository pattern
    • Unit of work
    • Lazy load

  • Transaction Patterns:-
    • Outbox pattern

  • SOA Patterns:-
    • Canonical model:-
      • used to communicate between different data formats.

  • Distributed & Scalable Design Patterns/ Algorithms:-
    • Enterprise Service Bus ESB
    • Microservices Design Patterns:-
      • Domain Driven Development
      • Aggregator:-
        • a service that receives a request, then makes requests of multiple services, combines the results and responds to the initiating request.
        • Three ways to implement aggregator:-
          • Scatter Gather Pattern
          • Chained Pattern:-
            • slower pattern than scatter gather pattern.
          • Branch Pattern
      • Proxy
      • Circuit Breaker
      • Materialized View Pattern
    • Domain Driven Design
    • Saga Pattern
    • Transactional Outbox Pattern
    • 2PC: Two-phase commit protocol:-
      • Mainly depends on transaction coordinator, which response for commit/rollback.
    • ServiceMesh


  • Network Design Patterns:-
    • DMZ



  • K8S Multi-Container Design Patterns:-
    • Sidecar pattern:-
      • eg. file puller
    • Ambassador pattern:-
      • eg. proxy server.
    • Adapter pattern:-
      • Transform the application output standardize/ normalized it for aggregation.
TODO:-
https://www.youtube.com/watch?v=LTE6BWfjOUo&list=PLZ9NgFYEMxp4pM7cZTe48udxbI1fR0zbM

https://refactoring.guru/design-patterns


Reference:-

Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software 2nd Edition

https://en.wikipedia.org/wiki/Software_design_pattern#Creational_patterns

http://www.itlec.com/2016/03/software-design-patterns.html

https://docs.microsoft.com/en-us/azure/architecture/patterns/
COMP9054: Software Architecture & Design
SOFT8025 - Scalable Microservices


Last update: 20240420

Comments


  1. Hi there to every , for the reason that I am truly eager of reading this blog's post to be updated regularly. It includes fastidious data. gmail login email

    ReplyDelete
    Replies
    1. This blog is part of Big family "www.ITLec.com".

      Personally I can confirm that "I will update post till I retired this job".

      I hope you and all others come back again and again.

      Delete
  2. What's up, just wanted to tell you, I enjoyed this post. It was helpful. Keep on posting! outlook 365 email login

    ReplyDelete
  3. Here are some tips you ought to take note of before obtaining an advertisement loan:. canada mortgage calculator Repaying your mortgage will take quite a long time, regardless that repayment strategy you go along with. mortgage payment calculator canada

    ReplyDelete
  4. Design pattern is an important concept to learn as they simplify the design and architecture of applications and systems. Problems based on design patterns, data structures and algorithms are frequently asked in programming interviews. Thank you for sharing your valuable knowledge. Great blog. Data structures and algorithms course

    ReplyDelete
  5. Great Post with valuable information. I am glad that I have visited this site. Share more updates.
    IELTS Coaching in Chennai
    IELTS Coaching in Tambaram

    ReplyDelete
  6. ZModeler 3.4.1 Build 1194 Crack is a powerful application, it can make 3D models for video games, you can also effortlessly make models for other uses. Zmodeler 3 License Crack

    ReplyDelete
  7. This comment has been removed by the author.

    ReplyDelete
  8. First day of school quotes your education is AN integral element of your living since the primary day of faculty to the last. School First Day Wishes

    ReplyDelete

Post a Comment