Nesneleri yaratmakta kullanılır.
# | Desen | Açıklama | Örnek |
---|---|---|---|
1 | Builder | Kod maliyeti olarak biraz fazladır ama okunurluk açısından rahatlık sağlar. Her yapılacak işlem için ayrı metodlarla nesne döndürülür ve en son Build() metodunda işlem tamamlanır. |
Ev inşasında gerekli her bir işlem ayrı metodlarda yapılıp en son build ile tamamlanır. |
2 | Singleton | Sınıf içerisinde tek bir nesne üzerinden ilerlenmesini sağlar. | Loglama işleminde tek bir instance üzerinden devam etmek mantıklıdır. |
3 | Abstract Factory | Benzer nesne üretimlerini gerçekleştirebilmek adına her nesne için ayrı bir fabrika sınıfı oluşturmamız gerekmektedir. Ayrıca bu desen, birden fazla interface kullanımı ile gerçekleştirilir. | Klasik ve modern mobilya ve masaları üretmek. |
4 | Prototype | Aynı sınıftan üretilecek olan nesnelerin (birbirleri ile çok ufak farklılıkları olması durumunda) nasıl en verimli şekilde üretileceği problemidir. | Kitap satış uygulaması içerisinde kitapları satmadan önce son kullanıcıya kitaba ait ön tanıtım sağlamak. |
5 | Factory | Bir nesne yaratma işlemi için bir üst sınıf kullanılarak alt sınıflardan uygun olanını seçmek. | Birden fazla ödeme yöntemi olan bir sistemde ödeme işlemini gerçekleştirmek. |
Nesneler arasındaki yapıları ifade eder.
# | Desen | Açıklama | Örnek |
---|---|---|---|
1 | Proxy | Web sitelerine giderken firewalla uğrayıp ondan sonra sunuculara ulaşılması gibi. | Dosya okuma işlemlerinde yetki kontrolü için yapılması. |
2 | Adapter | Farklı metodlar kullanan aynı işleri yapan işlemleri ortak birleştirici adaptör ile bağlamak. | Farklı veritabanlarına bağlantı ve sorguları execute ederken kullanılması. (MySQL-MSSQL gibi.) |
3 | Decorator | Nesnelerin farklı kombinasyonlar ile farklı özelliklere sahip olabilmesini (karmaşıklıktan uzak bir şekilde) sağlamak. | UI arayüz componentlerinin tasarlandığı bir uygulama. Butonlar, grafikler vs. içermesi. |
4 | Facade | Karmaşık sistem veya alt sistemlerin daha basit ve anlaşılır arayüzle yönetilmesini sağlar. | Alt sistemler için classlarımız olsun operasyon yönetsin. Facade ile kapsüllersek yönetmesi kullanması daha kolay olur. |
5 | Flyweight | Çok sayıda benzer nesneye ihtiyaç duyulması problemine çözüm olarak getirilmiştir. | İkili oyunlarda ağaç yerleştirme için nesne üretmek zorundayız, flyweight ile bellek optimizasyonu sağlanabilir. Aynı ağaç, farklı noktalara nesne üretmeden kullanılabilir. Orman olacak ormana tek tek ağaç ekleme yapacağız bunun konum bilgilerini ve ağaç türünü vereceğiz. |
6 | Bridge | Gerçekleştirimleri soyutlayarak birbirlerini iletişim kurabilecekleri bir köprü yapısı kurarak hiyerarşik karmaşıklığın önüne geçmeye çalışır. | TV Radyo gibi cihazlarda kumanda işlemleri için metotları yazıp kullanalım. |
7 | Composite | Nesneleri ağaç yapısına göre düzenleyerek ağaç yapısındaki alt üst ilişkisini kurmaya yarayan bir desendir. | Şirklet çalışan hiyeraşiasi çalışan ve yöneitlr altında bşaka yönetici ve çalışanmlar çalışan hiyerarişisi modelleme işlemi için kullanalım. |
Nesnelerin çalışma zamanına ait davranışlarını değiştirmek için oluşturulur.
# | Desen | Açıklama | Örnek |
---|---|---|---|
1 | Iterator | Döngü içerisinde kullanılacak işlemlerde yardımcı olur. | Yeni bir collection oluşturulup kitap ekleme ve listeleme işlemi için kullanılması. |
2 | Command | Direkt çağırmaktansa kapsülleyerek ana class yerine parametre ile başka classa erişimi sağlar. | Merhaba ve hoşçakal için ayrı commandlar oluşturulup Invoker üzerinden kapsüllenip ilgili metodların kullanılması. |
3 | Visitor | Farklı türleri aynı interface ile farklı metodlarla sağlar. | Alışveriş sepetinde farklı ürünler için vergi hesaplamayı, ayrı classlarda sağlama. |
4 | Template | Algoritma iskeleti tamamlamak, bazı adımları alt sınıfların uygulaması için algoritma yapısı değişmeden belli adımları özelleştirebilirsiniz. | İçeceği hazırlama adımları buna örnektir. Tek abstract class içinde işlemler sıraya dizilip sabit metodları yazıp classlar inherit edilerek override edilenler ile içecek hazırlanır. |
5 | Strategy | Öncelikle bir interface oluşturulur, sonra stratejiler belirlenir, class içindeki yapı tasarlanır ve belirlenen stratejiye göre işlemler yapılır. | E-Ticaret sitesinde ödemede kredi kartı, PayPal, Bitcoin kullanımı için pattern kullanımı. |
6 | State | Nesnenin iş durumuna bağlı davranış değiştirmesine olanak sağlayan, farklı durumlarda farklı işlemler sağlar. | Lambanın düğmesinin açılması, kapanması, parlaklığının arttırılıp azaltılması ile ilgili durumlarının kontrolünün sağlanması. |
7 | Memento | Bir nesnenin durumunu kaydedip geriye alma, ileri ve geri alma işlemlerinde kullanılabilir. | Yapılan işlemin aktif/pasif olma durumu ve bunun geriye alınıp bir önceki duruma getirilmesi. |
8 | Chain of Responsibility | Sorumluluk Zinciri, bir isteği bir dizi işleyici (zinciri) boyunca iletmenize izin veren davranışsal bir tasarım desenidir. Karmaşık iş kurallarının olduğu ve iç içe geçmiş birçok if blokları yerine ara sınıflar kullanarak daha yönetilebilir ve okunaklı kodlar yazılmasını sağlar. | Çeşitli ürünlerde farklı iskontoların formülize edildiği bir sistemde kullanılması. |
9 | Observer | Observer pattern, bir nesne kümesi arasındaki one-to-many ilişkiyi tanımlar. Bir nesnenin durumu değiştiğinde, bütün bağımlılarına bildirilir. | Hava istasyonu sıcaklık ve nem ölçsün, mobil bilgisayar uygulaması LCD ekranına isteyen bağlı kaldıkça alabilsin. Hangileri register edilmişse onları gösterir, unregister olanı çıkarır. |
10 | Mediator | Nesne arası iletişim aracı,merkezi̇ doğrudan eri̇şim ile medi̇ator sağlar. | Chat uygulaması ile kullanıcılar arası mesajlaşma uygulaması |
11 | Interpreter | Bir dilin gramerini tanımlamak ve bu dilde yazılan ifadeleri işlemek için kullanılır. Bu desen, genellikle programlama dilleri, komut satırı yorumlayıcıları veya ayrıştırıcılar (parsers) geliştirirken kullanılır. | String setini Ascii setine çevirme işlemi |
Yazar | Kaynak |
---|---|
Taner Saydam | Udemy - YouTube |
Ahmet Babalı | Medium |
Fatih İzgi | Medium |
Ali Furkan Gökçe | Medium |
Evren Bal | Medium |
Buse Tekin Ay | Medium |
Onur Dayıbaşı | Medium |
Veysel Mutlu | Medium |
Ali Turgut Bozkurt | Medium |
Kenan Atmaca | Medium |