- Soyutlama ile gerçekleştirmesini birbirinden ayırmak.
- Bridge Pattern soyutlamayı (abstraction) uygulamadan (implementation) ayırarak ikisinin birbirinden bağımsız çalışmasını sağlar.
- Bridge Pattern soyutlamayı (abstraction) uygulamadan (implementation) ayırarak ikisinin birbirinden bağımsız çalışmasını sağlar.
- Ana fikir Bileşimi, kalıtıma tercih et
Problem
- Normalde bir absraction ve implementasyonunu ayırmak için kalıtımı kullanırız.
- Absraction clasını farklı şekillerde implemente eden birden çok alt sınıfımız olabilir.(imp1,imp2 vs.)
- Fakat kalıtım ile Base Class ve Sub Class sıkı bir şekilde birbirine bağlanmış olur.
- Base Clası değiştirdiğimizde Sub Class da değişmek zorunda kalabilir.
- Ayrıca kalıtım ile compile-time da bir absraction ile implementasyonu birbirine bağlanmış olur ve implementasyonun run-time da değiştirilmesi imkansız hale gelmiş olur.
- Çünkü kalıtım değiştirilemez. Bir sınıftan run-time da başka bir sınıfı implemente etmesini isteyemeyiz.
- Sonuç olarak kalıtım kullandığımızda
- Abstraction ve implementasyon birbirine sıkı bir şekilde bağlanmış olur.
- Run-time da implementasyonu değiştiremeyiz.
Ana Fikir:
Soyutlamalar ile onların implementasyonları arasındaki ilişki her zaman is-a olarak yapılmak zorunda değildir.Bu ilişki bazen has-a ile de gösterilebilir ve bu durumda yüksek bağımlılığın getirdiği negatif etkiler aşılabilir.
Çözüm
Bridge kalıbı, soyutlamalar ile onların gerçekleştirmeleri arasında tabi durumda var olan is-a ilişkisini, has-a ilişkisine çevirir.
Bu durumda soyutlamalar ve gerçekleştirmeleri ayrı hiyerarşilerde tutulur.
Aralarında has-a ilişkisi olur.
Bu şekilde iki taraf arasındaki bağımlılığın azalması hedeflenir.
Run-time da bir implementasyonun seçilebilmesi için compile-time da absraction ve implementasyonun bağlanmasından kaçınılmalıdır.
Bir abstraction ve implementasyon arasındaki kalıcı bindingden kaçınmak istediğimiz de Bridge Patterni kullanabiliriz.
Hiç yorum yok:
Yorum Gönder