Sobes.tech
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.