-Yazılımın geliştirilmesi sırasında sıkça karşılaşılan ve birbirine benzeyen problemleri, tasarım aşamasında çözmek için geliştirilmiş ve işlerliği kanıtlanmış genel çözüm önerileridir.
SOLID: yazılım tasarım prensipleri için kullanılan bir kısaltmadır.
- Yazılım yaparken SOLID uygulandığı taktirde bakımı ve geliştirilmesi kolay yazılım sistemleri oluşturmak mümkündür.
Her yazılım biriminin (sınıf, nesne, metot) tek bir sorumluluğu olmalıdır.
Yazılım birimleri geliştirilmeye açık, değişikliğe kapalı olmalıdır.
Alt sınıflardan oluşturulan nesneler üst sınıfların nesneleriyle yer değiştirdiklerinde aynı davranışı göstermek zorundadırlar.
Herşeyi ihtiva eden interface sınıflar yerine belli bir işlemi yapan interface sınıflar oluşturulmalıdır.
Bağımlılıklar soyut sınıflara doğru olmalıdır.
Genel olarak tasarım kalıpları 3'e ayrılır:
• Factory • Abstract Factory • Builder • Prototype • Object Pool • Singleton
• Adapter • Bridge • Composite • Decorator • Facade • Flyweight • Front Controller • Module • Proxy
• Chain of Responsibility • Command • Mediator • Memento • Observer • Strategy • Template • Visitor