The Interface Segregation Principle (ISP) deals with cohesion and is closely related to the Single Responsibility Principle (SRP). In Uncle Bob’s terms, the ISP states that: Clients should not be forced to depend on methods that they do not use. In other words, this principle states that if a class performs multiple functions that may… Read More


The Dependency Inversion Principle deals with how to correctly design classes such that their dependency on one another causes the least amount of work in case of a change. Uncle Bob’s definition of DIP states: High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details. Details… Read More


Another fundemental principle of object-oriented software design is the Open-Closed Principle. According to Uncle Bob (Robert Martin), this principle states that: Software entities (classes, modules, functions, etc.) should beopen for extension, but closed for modification. Essentially, what this means is that software’s design should be such that it’s behavior can be modified by extending the… Read More