Junior — Middle
Bir sistem modülünün genişletilmeye açık, ancak değişikliğe kapalı olmasını nasıl sağlayabiliriz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir sistem modülü genişlemeye açık, ancak değişikliğe kapalı olacak şekilde SOLID'in Açıklık/Kapalı Prensibi (Open/Closed Principle) uygulanır.
Bu, şu yollarla başarılır:
- Modülün davranışını tanımlayan soyutlamaların (arayüzler, soyut sınıflar) kullanılması.
- Yeni fonksiyonelliklerin kalıtım veya bileşim yoluyla, modülün kaynak kodunu değiştirmeden uygulanması.
- Strateji (Strategy) veya Dekoratör (Decorator) gibi tasarım desenlerinin kullanılması, bu sayede davranışların dinamik olarak eklenebilmesi.
Dart (Flutter) örneği:
abstract class PaymentProcessor {
void pay(double amount);
}
class CreditCardProcessor implements PaymentProcessor {
@override
void pay(double amount) {
print('Kredi kartı ile $amount ödemesi');
}
}
class PayPalProcessor implements PaymentProcessor {
@override
void pay(double amount) {
print('PayPal üzerinden $amount ödemesi');
}
}
// Modül, PaymentProcessor soyutlamasını kullanır ve mevcut kodu değiştirmeden yeni ödeme yöntemleriyle genişletilebilir.