Creational Structural Behavioral SOLID Konular birbiriyle ilişkisine göre gruplanmıştır.
Nesne Oluşturma
Nesneyi kimin, nasıl ve kaç kez oluşturacağına karar veren desenler. Factory Method tek ürün, Abstract Factory ürün ailesi üretir; Builder adım adım kurar, Prototype kopyalar, Singleton tek örnekle sınırlar.
- 01Factory MethodFabrika Metodu DeseniNesne oluşturma işini bir metoda devretmek ve hangi sınıfın oluşturulacağına alt sınıfların karar vermesini sağlamak.Creational
- 02Abstract FactorySoyut Fabrika DeseniBirbiriyle ilişkili veya birlikte kullanılması gereken nesne ailelerini, somut sınıflarını belirtmeden oluşturmak için bir arayüz sağlamak.Creational
- 03Builderİnşaatçı (Kurucu) DeseniKarmaşık bir nesnenin adım adım oluşturulmasını sağlamak; aynı oluşturma süreciyle farklı görünümlerde nesneler üretebilmek.Creational
- 04PrototypePrototip (Klonlama) DeseniYeni nesneleri sıfırdan oluşturmak yerine, mevcut bir nesneyi (prototipi) kopyalayarak üretmek.Creational
- 05SingletonTek Örnek DeseniBir sınıftan uygulama boyunca yalnızca bir tane nesne oluşturulmasını garanti etmek ve bu nesneye her yerden erişilebilen tek bir giriş noktası sağlamak.Creational
Sarmalama ve Arayüz
Hepsi bir nesneyi başka bir nesnenin arkasına koyar. Adapter arayüzü çevirir, Facade sadeleştirir, Proxy erişimi kontrol eder, Decorator davranış ekler, Bridge iki boyutu ayırır.
- 06AdapterAdaptör (Uyarlayıcı) DeseniBirbiriyle uyumsuz arayüzlere sahip sınıfların, aralarına bir çevirici koyarak birlikte çalışabilmesini sağlamak.Structural
- 07FacadeCephe (Ön Yüz) DeseniKarmaşık bir alt sistem için basit, tek bir giriş noktası sunmak.Structural
- 08ProxyVekil DeseniBaşka bir nesneye erişimi kontrol etmek için onun yerine geçen bir vekil (temsilci) nesne sağlamak.Structural
- 09DecoratorDekoratör (Süsleyici) DeseniBir nesneye, sınıfını değiştirmeden ve kalıtım kullanmadan, çalışma zamanında katman katman yeni davranışlar eklemek.Structural
- 10BridgeKöprü DeseniBir soyutlamayı (abstraction) uygulamasından (implementation) ayırarak, ikisinin birbirinden bağımsız şekilde geliştirilebilmesini sağlamak.Structural
Ağaç Yapıları ve Dolaşma
Parça-bütün yapıları üzerinde çalışan desenler. Composite ağacı kurar, Interpreter onu bir dil olarak yorumlar, Iterator dolaşır, Visitor üzerine işlem ekler, Flyweight çok sayıdaki düğümü hafifletir.
- 11CompositeBileşik Nesne DeseniNesneleri ağaç yapısında bir araya getirmek ve istemcinin tekil nesnelere de nesne gruplarına da aynı şekilde davranabilmesini sağlamak.Structural
- 12InterpreterYorumlayıcı DeseniBasit bir dilin gramerini sınıflarla temsil etmek ve bu dilde yazılmış ifadeleri yorumlayıp değerlendirmek.Behavioral
- 13IteratorYineleyici (Gezici) DeseniBir koleksiyonun iç yapısını (dizi mi, ağaç mı, liste mi) açığa çıkarmadan elemanlarını sırayla dolaşmayı sağlamak.Behavioral
- 14VisitorZiyaretçi DeseniBir nesne yapısındaki sınıfları değiştirmeden, bu sınıflar üzerinde çalışacak yeni işlemler eklemek.Behavioral
- 15FlyweightSinek Siklet (Hafif Nesne) DeseniÇok sayıda benzer nesnede tekrar eden ortak veriyi paylaşarak bellek kullanımını azaltmak.Structural
Değişen Davranış
Bir işin nasıl yapılacağını değiştirilebilir kılar. Strategy algoritmayı dışarıdan seçtirir, State durum değiştikçe davranışı kendisi değiştirir, Template Method iskeleti sabitleyip adımları alt sınıflara bırakır.
- 16StrategyStrateji DeseniBir işi yapmanın farklı yollarını (algoritma ailesini) ayrı sınıflara taşıyıp çalışma zamanında birbirinin yerine kullanılabilir hale getirmek.Behavioral
- 17StateDurum DeseniBir nesnenin iç durumu değiştiğinde davranışının da değişmesini sağlamak; nesne sanki sınıfını değiştirmiş gibi görünür.Behavioral
- 18Template MethodŞablon Metot DeseniBir algoritmanın iskeletini üst sınıfta tanımlamak, bazı adımlarının uygulanmasını ise alt sınıflara bırakmak.Behavioral
İşlemler ve Geçmiş
İşlemleri ve durumları nesneye çevirerek saklamayı ve geri almayı sağlar. Command işlemi, Memento durumu kaydeder; birlikte Undo/Redo'nun iki yüzüdür.
- 19CommandKomut DeseniBir isteği, tüm bilgisiyle birlikte bağımsız bir nesneye dönüştürmek; böylece istekleri kuyruğa almak, kaydetmek ve geri almak (undo) mümkün olur.Behavioral
- 20MementoHatıra (Anlık Görüntü) DeseniBir nesnenin iç durumunu, kapsüllemeyi bozmadan kaydetmek ve daha sonra nesneyi bu duruma geri döndürebilmek.Behavioral
Nesneler Arası İletişim
Gönderen ile alıcıyı birbirinden ayırır. Observer değişikliği abonelere yayar, Mediator iletişimi bir merkezde toplar, Chain of Responsibility isteği bir zincir boyunca iletir.
- 21ObserverGözlemci (Yayın-Abone) DeseniBir nesnenin durumu değiştiğinde, ona bağlı (abone olmuş) tüm nesnelerin otomatik olarak haberdar edilmesini sağlamak.Behavioral
- 22MediatorArabulucu DeseniNesnelerin birbirleriyle doğrudan konuşmasını engelleyip tüm iletişimi merkezi bir arabulucu üzerinden yürütmek; böylece aralarındaki bağımlılığı azaltmak.Behavioral
- 23Chain of ResponsibilitySorumluluk Zinciri DeseniBir isteği, onu işleyebilecek nesne bulunana kadar bir zincir boyunca iletmek; isteği gönderen ile işleyeni birbirinden ayırmak.Behavioral
SOLID Prensipleri
Desenlerin dayandığı temel tasarım prensipleri. Yukarıdaki desenlerin çoğu bu prensiplerin somut uygulamalarıdır.
- 24Single Responsibility PrincipleS — Tek Sorumluluk PrensibiBir sınıfın değişmek için yalnızca tek bir nedeni olmalıdır. Yani her sınıf tek bir işten (tek bir paydaşın ihtiyacından) sorumlu olmalıdır.SOLID
- 25Open/Closed PrincipleO — Açık/Kapalı PrensibiYazılım varlıkları (sınıflar, modüller, fonksiyonlar) genişlemeye açık, değişikliğe kapalı olmalıdır.SOLID
- 26Liskov Substitution PrincipleL — Liskov Yerine Geçme PrensibiAlt sınıflar, üst sınıflarının yerine sorunsuzca kullanılabilmelidir. Üst sınıfla çalışan kod, alt sınıf verildiğinde de doğru çalışmaya devam etmelidir.SOLID
- 27Interface Segregation PrincipleI — Arayüz Ayrımı Prensibiİstemciler kullanmadıkları metotlara bağımlı olmaya zorlanmamalıdır. Büyük, genel arayüzler yerine küçük ve amaca özel arayüzler tercih edilmelidir.SOLID
- 28Dependency Inversion PrincipleD — Bağımlılığın Tersine Çevrilmesi PrensibiÜst seviye modüller alt seviye modüllere bağımlı olmamalıdır; ikisi de soyutlamalara bağımlı olmalıdır. Soyutlamalar detaylara değil, detaylar soyutlamalara bağımlı olmalıdır.SOLID
Aramanızla eşleşen konu bulunamadı.