Yazılım Sisteminin Can Simidi GoF Sistematiği
Vakti zamanında dört kafadar yazar(Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides) beyin fırtınası yaparak 1994 yılında ortaya Design Patterns: Elements of Reusable Object-Oriented Software adında bir kitap çıkartmış. Bu kitap içerisinde bir bölümde 3 farklı kategoriye böldükleri 23 kalıp bulunmaktadır. Yazılım dünyasına “GoF Sistematiği” olarak giren 3 farklı kategorideki 23 kalıp aşağıdadır.
1.Creational (Nesne yaratılışına ait) Kalıplar
Bu kalıplar nesneye yönelik programlamada en çok kullandığımız yazılım sistemindeki nesnelerin yaratılması hakkında yol göstermektedir.
- Abstract factory
- Builder
- Factory method
- Prototype
- Singleton
2.Structural (Yapısal) Kalıplar
Bu kalıplar, sistemin esnek olabilmesi için bileşenlerin nasıl yapılandırılması gerektiğini tanımlarlar. Bu noktada şunuda eklemek lazım aynı amaçlar için farklı farklı yöntemlerin kullanıldığı Creational kalıpların aksine, her bir Structural kalıp farklı bir amaca sahiptir.
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
3.Behavioral (Davranışsal) Kalıplar
Bu kalıplar algoritmalar ve nesneler arasındaki sorumlulukların atanmasıyla ilgilidir. Aynı zamanda aralarında iletişimini de tanımlar. Bu kalıpların güzelliklerinde biri de odağınızı sadece birbirine bağlı nesneler üzerine odaklanmanızı sağlar.
- Chain of responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
Ayrıca internet üzerinde yukarıda bahsettiğimiz bu kalıplardan oluşturulmuş yüzlerce cheat sheet var. Ben aşağıya bir örneğini bırakıyorum :)
Herkese iyi çalışmalar.