3 ms·
> inheritance & mixin bad / composition good This wisdom is at least as old as the classic GoF book [1] which was published in 1994. Many of their patterns can
by vog 10y ago
> inheritance & mixin bad / composition good
This wisdom is at least as old as the classic GoF book [1] which was published in 1994. Many of their patterns can be summarized as: "Favor 'object composition' over 'class inheritance'."
They also give a pretty simple, compelling reason for that: It is just a direct consequence of the even more fundamental principle:
"Program to an interface, not an implementation."
[1] Gang of Four (Erich Gamma,
Richard Helm,
Ralph Johnson,
John Vlissides): "Design Patterns: Elements of Reusable Object-Oriented Software" https://en.wikipedia.org/wiki/Design_Patterns https://en.wikipedia.org/wiki/Design_Patterns
- charlysisto 10y agoI would argue that the more intuitive principle behind composition is the "Single Responsibility" one. Although it is correlative to the idea of 'program to an interface' (aka don't mingle with the state from the inside of an object that is not for you to do) I find it easier to grasp. While i'm at it I'll add that the main reason SRP is so important is because it limits combinatorial explosions of state, so you can keep control, test and reason about it - incidentally the main idea behind the success of React.js