In object-oriented programming, the open–closed principle states “software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification“; that is, such an entity can allow its behaviour to be extended without modifying its source code.
The name open–closed principle has been used in two ways. Both ways use generalizations (for instance, inheritance or delegate functions) to resolve the apparent dilemma, but the goals, techniques, and results are different.
|Principles of Object-Oriented Design|
|S – Single responsibility principle – SRP|
O – Open–closed
L – Liskov substitution principle – LSP
I – Interface segregation principle – ISP
D – Dependency inversion – DI