Tasarım Desenleri (Design Patterns) Nedir?
14 Kasım 2009 – 00:30Adını son zamanlarda sıklıkla duymaya başladığımız tasarım desenleri nedir, ne işe yarar? Tasarım desenleri bir yazılım problemini çözmek için geliştirilmiş çeşitli çözüm yollarıdır. Zaman içersinde pek çok uygulamada karşılaşılan sorunlara yazılımcılar farklı çözümler geliştirmek durumunda kaldılar. Bunlardan bazıları işe yaramazken bazıları oldukça işe yaradı ve yazılımcılar bu işe yarayan yöntemleri geliştirdikleri başka uygulamalarda da kullandılar. En iyi yöntemler haklı olarak yazılımcılar tarafından daha çok tutuldu ve benzer uygulamalarda en etkin sonucu verdiği için bunlar kullanıldı. Nesne yönelimli programlama mantığına uygun geliştirilen bu yöntemler sık karşılaşılan sorunları çözmede en etkin yol olduğu için yazılım mühendisliğinde önemli bir olgu oldu.
Nesne yönelimli programlamada classların diğer classlara en az bağımlı olması gerekir. Programa yeni bir şey ekleneceğinde kodun iyi anlaşılabilmesi ve rahat genişletilebilir olması yani esnek olması gerekir. İşte bu durumları uygulayabilmek için tasarım desenlerini kullanırız ve yazılımın kalitesini artırırız.
Yazılımcılar en çok kullanılan ve en etkin yöntemlere isimler verdiler. Bu yüzden aynı yöntemi kaynaklarda pek çok farklı isimle görebilmek mümkündü. 1994 yılında ise, Gang of Four (dörtlü çete) olarak tanınan “Erich Gamma”, “Richard Helm”, “Ralph Johnson”, ve “John Vlissides” isimli yazarlar “Design Patterns: Elements of Reusable Object-Oriented Software” adlı kitabı yazdılar ve bu en yaygın olarak kullanılan 23 deseni en çok kullanılan isimleriyle bu kitapta topladılar. Bunlar:
1- Kurucu Desenler:
- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
2- Yapısal Desenler:
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
3- Davranışsal Desenler:
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
Sonraki yazılarımda bu desenlerin ne olduğuna ve hangi durumlarda kullanıldıklarına değineceğim. İyi çalışmalar.

