SOLID Principles: Open Closed Principle for better Understanding of extension and modification.

Reading Time: 5 minutes
SOLID Principles: Open Closed Principle for better Understanding.
(Note: The Above Image is Copied from it is only for reference purposes we didn’t claim its ownership)


The Open-Closed Principle states that a software module (class, method, etc.) should be open for extension but closed to modification. This principle was proposed by Bertrand Meyer in the late 1970s and early 1980s. As a guideline for designing object-oriented software. The OCP states that the purpose of design patterns is to hide details from clients. And can focus on their specific problem domain rather than on how their application is implemented.

SOLID Design Principles Explained

The SOLID principles are a set of five best practices for object-oriented programming. They are:

Single Responsibility Principle(SRP)

An object should have only one reason to change. If you can break your code into smaller, more manageable chunks, it’s easier to test and maintain. This means the class should focus on a single task or function rather than being too broad.

Open/Closed Principle(OCP)

Classes should be open for extension but closed for modification. This means that if you want to add new features to an existing class without breaking existing functionality. Then you need another class with which to modify that functionality (and vice versa). For example, A Car class has two attributes—make and model. Which allow other objects such as CarsWithAClass to factor in their own data. And when they’re added into the database using our ModelDB library feature.

Liskov’s Substitution Principle(LSP):

LSP tells us that “Derived training should be substitutable for their base training.” What precisely Barbara Liskov wrote “What is needed right here is something like the following substitution assets. If for every object O1 of kind S there’s an object O2 of type T such that for all programs P described in phrases of T. The behavior of P is unchanged whilst O1 is substituted for O2 then S is a subtype of T”. In very smooth words, we can also say that “gadgets in a program have to be replaceable with times in their subtypes without changing the correctness of this system“.

Interface Segregation Principle(ISP):

ISP states “Many purchaser precise interfaces are better than one standard cause interface“. The soul of the principle is pretty simple. when you have a category that has several clients, in place of loading the elegance with all of the strategies that the customers need, create unique interfaces for every patron and multiply inherit them into the elegance.

Dependency Inversion Principle(DIP):

DIP states “rely on Abstractions. Do now not depend on concretions“. The DIP states the number one mechanism. Dependency Inversion is the approach of depending upon interfaces or summary functions and training, instead of upon concrete features and lessons. This shape begins on the pinnacle and factors down closer to details. excessive-stage modules depend upon lower-stage modules, which depend on yet lower-level modules, and so forth.

What is the Open-Closed Principle (OCP)?

The Open-Closed Principle (OCP) is a principle of software engineering. It states that a software module (class, method, etc.) should be open for extension but closed to modification.

It’s a simple idea: If you want people to modify your code, you need to make it easy for them! But what does it really mean?

The Meyer definition :

The Meyer definition states that a class should be open for extension but closed for modification. This means that:

  • A class is open for an extension if adding new features to the original source code without modifying the existing code base is possible. In other words, you can add new methods and fields without having to change any existing ones or classes. You may also want to make sure that all accessors are private or protected so that only certain classes have access to them (e.g., when implementing inheritance).
  • A class is closed for modification if adding new methods or fields would require changing other parts of your program (e.g., when using inheritance).

Advantages and Disadvantages

The open-closed principle is a common method of creating an interface that allows users to interact with the system in different ways. It’s also called the “open-closed principle” because it emphasizes that the user should be able to interact with a system in both an open and closed way.

The advantages of this approach are:

  • It promotes creativity and innovation by giving your users more flexibility over how they want to use your product or service;
  • You can easily adapt your product for different needs by allowing them access to parts of it when needed; *and most importantly, it helps you avoid unnecessary complexity which leads up costs down the road (more on this later).

What are the benefits of the Open Closed Principle?

Open Closed Principle is a design principle that says that software modules (classes, methods, etc.) should be open for extension but closed for modification. This principle helps create flexible software that can be easily changed and maintained in the future.

This principle can be applied to both your organization’s code base as well as its processes. With this in mind, it’s important to ask yourself: What are our goals here? Do we want to increase flexibility or changeability? And how do we achieve those goals?

How to design for open-closed principle

When designing for the Open Closed Principle, you want to ensure that your classes are easy-to-use and extensible. This means that when you write code in a class, it should be possible for other programmers or even users of this class to add new functionality without having to modify existing code or even know what those changes will do.

To accomplish this goal, all methods should be public except those marked private (or protected). By making all methods public, it gives others access not only during runtime but also at compile time as well since any code can inspect any method which has been declared public and make changes accordingly. This makes debugging easier as well because if there is an error in one method then all others still work correctly so finding out where things went wrong usually involves testing each function individually instead of just having one big test case where everything works fine except for one little thing here maybe something about composition wasn’t working exactly right etcetera…

What are the Design Patterns that follow the Open Closed Principle?

  • Adapter
  • Bridge
  • Facade
  • Flyweight (using the Strategy pattern)

Open Closed Principle in Java with Examples

The Open Closed Principle is a design principle that states that software components (such as classes and methods) should be open for extension but closed for modification. In other words, it means that you can add new functionality to your software without having to change the existing code. This principle is applicable in Java programming language because there are many ways of implementing OCP using annotations or interfaces.

Let us now take a look at some examples of how this can be applied in Java :

The Open-Closed principle states that a software module (class, method, etc.) should be open for extension but closed to modification.

The Open-Closed Principle states that a software module (class, method, etc.) should be open for extension but closed to modification.

Open for an extension means that the module is designed in such a way that it can be extended without modifying its source code. This allows you to modify your code and use it with other applications without having to recompile or even readjust anything else.


The Open Closed Principle is one of the most important design principles that you should be aware of when developing software. This approach to designing software has been around for many years. But it’s still useful today. It provides us with a good way to think about our designs and how they can be extended or changed without worrying about breaking something else in our application.

For More Info you can refer to our Blogs :
1) SOLID Principle
2) Major Concepts