Academic Corporate Fusion

Open/Closed Principle (OCP)

The Open/Closed Principle (OCP) states that a software module (class, function, or component) should be open for extension but closed for modification. This means that you should be able to add new functionality to a module without changing its existing code. OCP is one of the SOLID principles in object-oriented programming.

Why Follow OCP?

  1. Avoid Breaking Existing Code: Reducing the risk of introducing bugs in tested and working code.
  2. Encourage Extensibility: Allows adding new features with minimal disruption.
  3. Improves Maintainability: Modular, extendable code is easier to maintain.

Real-Life Examples

1. Payment System

Imagine an e-commerce application that needs to process different payment methods (e.g., Credit Card, PayPal, Google Pay).

Violation of OCP:

 

public class PaymentProcessor {
    public void processPayment(String paymentType) {
        if (paymentType.equals("CreditCard")) {
            System.out.println("Processing Credit Card Payment");
        } else if (paymentType.equals("PayPal")) {
            System.out.println("Processing PayPal Payment");
        } else if (paymentType.equals("GooglePay")) {
            System.out.println("Processing Google Pay Payment");
        }
    }
}

Issues:

  • Every time a new payment method is added, the processPayment method must be modified.
  • This violates OCP because the class isn’t closed for modification.
Applying OCP:

Use an abstract class or interface to define a common contract for payment methods, allowing new payment methods to be added without modifying existing code.

 

java
// Define a common interface public interface PaymentMethod { void processPayment(); } // Implement specific payment methods public class CreditCardPayment implements PaymentMethod { public void processPayment() { System.out.println("Processing Credit Card Payment"); } } public class PayPalPayment implements PaymentMethod { public void processPayment() { System.out.println("Processing PayPal Payment"); } } public class GooglePayPayment implements PaymentMethod { public void processPayment() { System.out.println("Processing Google Pay Payment"); } } // Payment processor uses abstraction public class PaymentProcessor { public void processPayment(PaymentMethod paymentMethod) { paymentMethod.processPayment(); } }

Adding a new payment method: To add a new payment method (e.g., Apple Pay), simply create a new class implementing the PaymentMethod interface:

java
public class ApplePayPayment implements PaymentMethod { public void processPayment() { System.out.println("Processing Apple Pay Payment"); } }

Let’s see another example.

Imagine a notification system that supports email and SMS notifications.

Violation of OCP:

 

java
public class NotificationService { public void sendNotification(String type, String message) { if (type.equals("Email")) { System.out.println("Sending Email: " + message); } else if (type.equals("SMS")) { System.out.println("Sending SMS: " + message); } } }

Issues:

  • Adding a new notification type (e.g., Push Notifications) requires modifying the sendNotification method.
  • This violates OCP.

Let’s give a try and fix it.

Comments (4)

  • AIGO Tools

    May 29, 2025 - 5:18 pm

    Great breakdown! It’s fascinating how AI is reshaping tools we use daily. If you’re curious about AI’s role in content, check out AI Checker Essay. Really eye-opening stuff!

  • 888php

    August 4, 2025 - 12:10 pm

    RTP analysis is key to understanding slot volatility, and a smooth mobile experience matters so much. Heard good things about the 888php app download for Philippines players – convenient access is a big plus! Definitely impacts enjoyment.

  • taya365login

    August 4, 2025 - 12:50 pm

    Interesting analysis! Seeing a lot of mobile-first strategies now, makes sense for the Philippines market. Easy access is key – like with a quick taya 365 login game session on your phone! Solid points about player security too.

  • strong cannabis tinctures

    September 30, 2025 - 10:35 pm

    weed edibles usa shipping discreet secure

Leave A Comment

Call Now Button