The book called “A Pattern Language”[1] by C.Alexander is the fundamental reference for the book named “Design Patterns (GoF)”, which is generally accepted as the standard in building software.
[1] https://en.wikipedia.org/wiki/A_Pattern_Language
A pattern language [2] is a method of describing good design practices or patterns of useful organization within a field of expertise.
[2] https://en.wikipedia.org/wiki/Pattern_language
Architectural Concepts
Envision - Examine stakeholder goals combined with architect’s expertise.
Model - View the ‘lay of the land’ to construct a model and set expectations.
Blueprint - Specify the construction details and constraints.
Inspect - Verify construction implementation.
Term Nomenclature - communicate in terms understandable to listeners.
Mapping to software field
Envision - Software Architecture
Model - Design Patterns
Blueprint - Construction & Design principles
Inspect - Construction patterns
Nomenclature - Terms to communicate intent
Software Architecture
Web server - A pipeline architecture
SOA - A component architecture
Client/Server - A layered architecture
Single Tier - Monolithic Architecture
Cloud - A tier network architecture
Design Patterns
Creational
Structural & Behavioral
Event Driven
Plugins
Design Principles
Abstraction
Encapsulation
Cohesion
Coupling
Complexity
Construction Patterns
Inheritance Design
Component Design
Layered Design
Tier Design
Delivery methodology
Software Architecture erosion (“Decay”)
OO Basics
Abstraction
Encapsulation
Polymorphism
Inheritance
OO Principles
- Encapsulate what varies - Identify different behaviors
- Favor composition over inheritance
- Program to interfaces, not implementation
- Strive for loosely coupled designs between objects that interact.
- Open Close : Class should be open for extension but close for modification.
- Dependency Inversion : Depend upon abstraction. Do not depend upon concrete classes.
- Least Knowledge : Talk only to your immediate friends.
OO Patterns
What is a pattern : A reusable solution to a problem which occurring in a particular context.
Structure of a pattern
Name
Context - situation
Problem
Forces
Solution
Resulting Contex - 1. Benefits 2. Drawbacks 3. Issues to resolve
Related Patterns
Three fundamental groups
https://www.gofpatterns.com/design-patterns/module2/three-types-design-patterns.php
Behavioral patterns - Describe interactions between objects
- Template pattern - https://www.tutorialspoint.com/design_pattern/template_pattern.htm
- Interpreter pattern -
Creational- Make objects of the right class for a problem
- Abstract Factory - https://www.journaldev.com/1418/abstract-factory-design-pattern-in-java
- Factory vs Abstract Factory
- Singleton-
Structural- Form larger structures from individual parts, generally of different classes.
- Facade (Unified Interface)- https://www.tutorialspoint.com/design_pattern/facade_pattern.htm
No comments:
Post a Comment