Question: 2 . Open / Closed Principle ( OCP ) : Make the PaymentProcessor open for extension ( for handling different payment methods ) but closed

2. Open/Closed Principle (OCP):
Make the PaymentProcessor open for extension (for handling different payment methods) but closed for modification.
@startuml
interface PaymentValidator {
+validate(payment: Payment): boolean
}
interface PaymentPersister {
+persist(payment: Payment): void
}
interface PaymentMethodProcessor {
+processPayment(payment: Payment): void
}
class PaymentProcessor {
-validator: PaymentValidator
-persister: PaymentPersister
-methodProcessor: PaymentMethodProcessor
+processPayment(payment: Payment): void
}
class CreditCardProcessor implements PaymentMethodProcessor {+processPayment(payment: Payment): void
}
class PayPalProcessor implements PaymentMethodProcessor {+processPayment(payment: Payment): void
}
class Payment {
-amount: double
-customerId: String
-paymentMethod: String
}
PaymentProcessor *--> PaymentValidator
PaymentProcessor *--> PaymentPersister
PaymentProcessor *--> PaymentMethodProcessor
@enduml

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!