I have noticed that the discussion on Designed Inheritance vs. Open Inheritance has been getting a lot of attention again lately.
With Designed Inheritance you design your class having in mind that other classes can derive from it or you don’t allow derivation and therefore mark it with the sealed keyword. Designed Inheritance is considered to be a good design principle. In my opinion the basic idea behind Designed Inheritance is to have some kind of assurance that designers that use your class will not violate the Liskov Substitution principle.
With Open Inheritance you trust that the users of your library know what they are doing and lay the choice on whether or not to derive from your classes in their hands.
As you can see one can argue on which principle is better then the other but in my opinion the answer is: “it depends”.
Martin Fowler's DesignedInheritance
Cross-posted from
The .NET Aficionado