What OO Fails to Do
What object oriented programming fails to do is express collaborations between objects. To show you exactly what I mean, let’s take a look at two system operations (two use cases) requiring the same group of objects collaborating with each other.
(…)
DCI to the Rescue
DCI is a paradigm invented by Trygve Reenskaug (the inventor of the MVC pattern) to solve these problems.
(via Data Context Interaction: The Evolution of the Object Oriented Paradigm – SitePoint )...
via The Clean Architecture | 8th Light by “Uncle” Bob Martin
The outer circles are mechanisms. The inner circles are policies.
The overriding rule that makes this architecture work is The Dependency Rule . This rule says that source code dependencies can only point inwards .
Entities Use Cases Adapters (Controllers, Gateways, Presenters) Frameworks Only Four Circles?
No, the circles are schematic. You may find that you need more than just these four....
Keynote: Architecture the Lost Years by Robert Martin @ Ruby Midwest 2011
(also on YouTube … and a few weeks later, without slides , on The “A” word. A Discussion About Architecture in a Software Craftsmanship conference )
Images clipped together from…
The “Presenter” and “View Model” at 35:28 “The whole Enchilada!” at 37:50 “The Database is a Detail!” at 42:26 Elements summary:
Entities — Generic application agnostic data and business rules (e....
A good architecture allows major decisions to be deferred!
Robert Cecil Martin
Or putting it in another way…
A good architecture maximizes the number of decisions NOT made.
SOLID (object-oriented design)
A mnemonic acronym introduced by Robert C. Martin in the early 2000s:
S : Single responsibility principle — “an object should have only a single responsibility.” O : Open/closed principle — “software entities should be open for extension, but closed for modification.” L : Liskov substitution principle — “objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program.” (see also design by contract ) I : Interface segregation principle — “many client specific interfaces are better than one general purpose interface....