Open/closed principle applied
The open/closed principle is a principle credited to Bertrand Meyer after its appearance in his 1988 book called Object-Oriented Software Construction. This is a principle regarding types we can apply in our software:
- A type is open if it can be extended
- A type is closed when it is available to other types
Classes in C# are open for extension by default. We can inherit from them and add new meanings to them. But the base class we’re inheriting from should be closed, meaning that there shouldn’t be any need for changes in the base type for the new type to work.
This helps us design our code for extensibility and keep responsibilities in the right place.
Taking a step back, we can apply some of this same thinking on the system level. What if our systems can just be extended with new capabilities without having to add configuration at the heart of a type for it to know about the additions?
This type of thinking is...