Nesneye yönelik tasarımla ilgili birçok sezgisel tarama vardır. Örneğin, “tüm üye değişkenleri özel olmalı” veya “global değişkenlerden kaçınılmalıdır” veya “çalışma zamanı tür tanımlamasını kullanmak (RTTI) tehlikelidir”. Bu sezgisel taramaların kaynağı nedir? Onları gerçek kılan ne? Onlar mı hep doğrudur? Bu sütun, bu sezgisel araştırmanın altında yatan tasarım ilkesini - açık-kapalı prensibi - inceler.
Ivar Jacobson'ın dediği gibi: “Tüm sistemler yaşam döngüleri boyunca değişir. İlk versiyondan daha uzun sürmesi beklenen sistemler geliştirilirken bu akılda tutulmalıdır. ”Değişim karşısında kararlı olan ve ilk versiyondan daha uzun sürecek tasarımları nasıl oluşturabiliriz? Bertrand Meyer, 1988'de, şimdiye kadar ünlü açık-kapalı prensibini icat ettiği zaman bize rehberlik etti. Onu felç etmek için:
YAZILIM GİRİŞLERİ (SINIFLAR, MODÜLLER, FONKSİYONLAR, VB.) UZATMA AÇILMALI, DEĞİŞTİRME İÇİN KAPALI OLMALIDIR.
Bir programda yapılan tek bir değişiklik, bağımlı modüllerde bir değişiklik basamağıyla sonuçlandığında, bu program “kötü” tasarımla ilişkilendirdiğimiz istenmeyen nitelikleri gösterir. Program kırılgan, katı, öngörülemez ve tekrar kullanılamaz hale geliyor. Açık-kapalı ilke, buna çok basit bir şekilde saldırır. Asla değişmeyen modüller tasarlamanız gerektiğini söylüyor . Gereksinimler değiştiğinde, zaten çalışan eski kodu değiştirerek değil, yeni kod ekleyerek bu tür modüllerin davranışını genişletirsiniz.
Açıklama
Açık-kapalı prensibe uygun olan modüller iki temel özelliğe sahiptir.
- Onlar “Uzantıya Açık” tır.
Bu, modülün davranışının uzatılabileceği anlamına gelir. Modülün, uygulamanın gereksinimleri değiştikçe yeni ve farklı şekillerde davranmasını sağlayabilir veya yeni uygulamaların gereksinimlerini karşılayabiliriz.
- Onlar “Değişikliğe Kapalı”.
Böyle bir modülün kaynak kodu inviolate. Hiç kimse kaynak kodu üzerinde değişiklik yapamaz.
Bu iki özelliğin birbiriyle çelişkili olduğu görülüyor. Bir modülün davranışını genişletmenin normal yolu, o modülde değişiklik yapmaktır. Değiştirilemeyen bir modülün normal olarak sabit bir davranışı olduğu düşünülmektedir. Bu iki karşıt nitelik nasıl çözülebilir?
Soyutlama Anahtardır ...