Design pattern yazılım tasarımında ortaya çıkan yaygın sorunlar için genel yeniden kullanılabilir bir çözüm sağlar. Model tipik olarak sınıflar veya nesneler arasındaki ilişkileri ve etkileşimleri gösterir. Buradaki fikir, iyi test edilmiş, kanıtlanmış geliştirme/tasarım paradigmaları sağlayarak geliştirme sürecini hızlandırmaktır. Design Pattern’lar, ortak bir sorunu çözmek için programlama dilinden bağımsız stratejilerdir. Bu bir design pattern’nın belirli bir uygulamayı değil, bir fikri temsil ettiği anlamına gelir. Design Pattern kullanarak kodunuzu daha esnek, yeniden kullanılabilir ve bakımı yapılabilir hale getirebilirsiniz.
Projenizde her zaman design pattern uygulamak zorunlu değildir. Design pattern’ler proje geliştirme amaçlı değildir. Design pattern ortak problemi çözmek içindir. Ne zaman ihtiyaç duyulursa, gelecekte bu tür sorunlardan kaçınmak için uygun bir pattern uygulamanız gerekir. Hangi kalıbı kullanacağınızı bulmak için design pattern ve amaçlarını anlamaya çalışmanız yeterlidir. Sadece bunu yaparak, doğru olanı seçebileceksiniz.
Hedef:
Gerektiğinde doğru pattern’i seçip uygulamak için her design pattern’nin amacını ve kullanımını anlayın.
Örnek:
Bir sınıfın yalnızca bir örneğini oluşturmak istiyoruz. Örneğin, herhangi bir zamanda bir ülkenin yalnızca bir aktif başkanı olabilir. Bu pattern’e Singleton pattern’ni denir. Diğer yazılım örnekleri, her nesne için ayrı bir DB bağlantısı oluşturmak maliyetli olduğundan, birden çok nesne tarafından paylaşılan tek bir DB bağlantısı olabilir. Benzer şekilde, birden çok yönetici oluşturmak yerine tüm sorunları ele alan bir uygulamada tek bir yapılandırma yöneticisi veya hata yöneticisi olabilir.
Design Pattern Türleri
Temel olarak üç tür design pattern vardır:
1. Creational Pattern (Yaratımsal Kalıplar)
Bu design pattern, tamamen sınıf somutlaştırma veya nesne oluşturma ile ilgilidir. Bu örüntüler ayrıca Sınıf-oluşturucu örüntüler ve nesne-oluşturucu örüntüler olarak kategorize edilebilir. Sınıf oluşturma pattern’ni, somutlaştırma sürecinde kalıtımı etkin bir şekilde kullanırken, nesne oluşturma pattern’i işi yapmak için yetkilendirmeyi etkili bir şekilde kullanır.
Creational design patterns türleri
- Factory Method Pattern
- Abstract Factory Pattern
- Builder Pattern
- Singleton Pattern
- Object Pool Pattern
- Prototype Pattern
Creational design pattern kullanım durumu-
1) Bir geliştiricinin bir veritabanına bağlanmak için basit bir DBConnection sınıfı oluşturmak istediğini ve koddan birden çok konumda veritabanına erişmek istediğini varsayalım, genellikle geliştiricinin yapacağı şey bir DBConnection sınıfı örneği oluşturmak ve gerektiğinde veritabanı işlemlerini yapmak için kullanır. Bu DBConnection sınıfının her örneğinin veritabanına ayrı bir bağlantısı olacağından, veritabanından birden çok bağlantı oluşturulmasına neden olur. Bununla başa çıkmak için DBConnection sınıfını singleton sınıfı olarak oluşturuyoruz, böylece DBConnection’ın sadece bir örneği oluşturulur ve tek bir bağlantı kurulur. DB Bağlantısını tek bir örnek üzerinden yönetebildiğimiz için yük dengesini, gereksiz bağlantıları vb. kontrol edebiliriz.
2) Benzer türden birden çok örnek oluşturmak istediğinizi ve loose bağlantı elde etmek istediğinizi varsayalım, ardından Factory modeline gidebilirsiniz. Factory design pattern’nı uygulayan bir sınıf, birden çok sınıf arasında bir köprü görevi görür. PostgreSQL ve Oracle gibi birden çok veritabanı sunucusu kullanma örneğini düşünün. Backend olarak PostgreSQL veritabanını kullanan bir uygulama geliştiriyorsanız, ancak gelecekte veritabanını Oracle olarak değiştirmeniz gerekiyorsa, Factory design pattern loose bağlantı ve kolay uygulamayı sürdürdüğü için tüm kodunuzu değiştirmeniz gerekecektir. Loose bağlantı ve benzer türde bir nesnenin oluşturulmasını sağlamak için Factory design pattern modelini kullanabiliriz.
2. Structural Pattern (Yapısal Kalıplar)
Bu design pattern daha büyük yapılar oluşturmak ve yeni işlevsellik sağlamak için farklı sınıfları ve nesneleri organize etmekle ilgilidir.
Structural design patterns türleri
- Adapter Pattern
- Bridge Pattern
- Composite Pattern
- Decorator Pattern
- Facade Pattern
- Flyweight Pattern
- Private Class Data Pattern
- Proxy Pattern
Structural Design Pattern Kullanım Örneği-
1) 2 interface birbiriyle uyumlu olmadığında ve aralarında bir adapter aracılığıyla bir ilişki kurmak istediğinde, buna adapter design pattern denir. Adapter pattern, bir sınıfın arabirimini, istemcinin beklediği başka bir arabirime veya sınıfa dönüştürür, yani adapter, uyumsuzluk nedeniyle başka türlü yapamayan sınıfların birlikte çalışmasına izin verir. bu tür uyumsuz senaryolarda, adaptör modeline kullanabiliriz.
3. Behavioral Pattern (Davranışsal Kalıplar)
Behavioral pattern, nesneler arasındaki ortak iletişim pattern’leri belirlemek ve bu pattern’i gerçekleştirmekle ilgilidir.
Behavioral patterns türleri
- Chain of responsibility
- Command
- Interpreter Pattern
- Iterator Pattern
- Mediator Pattern
- Memento Pattern
- Null Object Pattern
- Observer Pattern
- State Pattern
- Strategy Pattern
- Template method Pattern
- Visitor Pattern
Behavioral Design Pattern Örneği Kullanım Örneği-
1) Template pattern, bazı adımları alt sınıflara erteleyen bir işlemdeki bir algoritmanın iskeletini tanımlar. Template method’u alt sınıfların algoritma yapısını değiştirmeden bir algoritmanın belirli adımlarını yeniden tanımlamasını sağlar. Örneğin projenizde modülün davranışının, uygulamanın gereksinimleri değiştikçe modülün yeni ve farklı şekillerde davranmasını veya yeni uygulamaların ihtiyaçlarını karşılamasını sağlayacak şekilde genişletilebilmesini istiyorsunuz. Bununla birlikte, hiç kimsenin kaynak kodunda değişiklik yapmasına izin verilmez, yani bir geliştirici template design pattern modeline yaklaşabileceği senaryolarda yapıya ekleyebilir ancak değiştiremez.
Yorum Yap