Abstractions & Encapsulation
Use stable façades and information hiding to manage complexity, evolve safely, and enforce boundaries
Use stable façades and information hiding to manage complexity, evolve safely, and enforce boundaries
Encapsulate a request as an object allowing you to parameterize clients with commands
Assign responsibility to the class that has the information needed to fulfill it
Master the Principle of Least Knowledge to reduce coupling and improve maintainability in complex systems.
Capture and externalize an object's state without violating encapsulation
Apply modularity principles, information hiding, and sound module design to reduce coupling, improve cohesion, and enable independent system evolution.
TL;DR
Allow an object to alter its behavior when its internal state changes
Define a family of algorithms, encapsulate each, and make them interchangeable
Master the fundamentals of systems thinking for software architecture: components, connectors, configurations, interfaces, and abstractions to reason about change, risk, and evolution.