Sobes.tech
Middle

Tasarım kalıpları nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Tasarım kalıpları, nesne yönelimli programlamada sık karşılaşılan sorunlar için sıkça kullanılan, defalarca test edilmiş çözümlerdir. Bunlar hazır kullanılabilir kütüphaneler veya çerçeveler değil, kavramlar veya "tarzlar"dır ve belirli bir göreve uyarlanabilirler.

Kalıplar, sınıflar ve nesneler arasındaki ilişkilere odaklanır. Üç ana kategoriye ayrılırlar:

  • Yaratımsal (Creational): Nesne oluşturma kalıpları.
    • Fabrika Yöntemi (Factory Method)
    • Soyut Fabrika (Abstract Factory)
    • Singleton
    • Builder
    • Prototype
  • Yapısal (Structural): Sınıfları ve nesneleri daha büyük yapılara organize etmek için kalıplar.
    • Adaptör (Adapter)
    • Köprü (Bridge)
    • Bileşim (Composite)
    • Dekoratör (Decorator)
    • Facade (Fasade)
    • Flyweight
    • Proxy
  • Davranışsal (Behavioral): Algoritmalar ve sınıflar ile nesneler arasındaki etkileşim biçimleri için kalıplar.
    • Sorumluluk Zinciri (Chain of Responsibility)
    • Komut (Command)
    • İteratör (Iterator)
    • Aracı (Mediator)
    • Memento
    • Gözlemci (Observer)
    • Durum (State)
    • Strateji (Strategy)
    • Şablon Yöntemi (Template Method)
    • Ziyaretçi (Visitor)

Tasarım kalıplarını kullanmak, daha esnek, genişletilebilir ve sürdürülebilir kodlar yazmayı sağlar, okunabilirliği artırır ve ekip çalışmasını kolaylaştırır.

Örneğin, Singleton kalıbı, bir sınıfın yalnızca bir örneği olmasını garanti eder ve ona küresel erişim noktası sağlar.

// Java'da Singleton örneği
class Singleton {
    private static Singleton instance; // Tek örnek

    private Singleton() {
        // Yeni örneklerin oluşturulmasını engellemek için özel yapıcı
    }

    public static Singleton getInstance() {
        if (instance == null) { // İlk çağrıda örnek oluşturulur
            instance = new Singleton();
        }
        return instance; // Tek örneği döner
    }

    public void showMessage() {
        System.out.println("Singleton'dan Merhaba!");
    }
}