Sobes.tech
Middle+

Tasarım desenleri kullanarak hangi görevleri çözdünüz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kodun yapısını ve sürdürülebilirliğini artırmak için çeşitli desenler uyguladı:

Yaratıcı desenler:

  • Singleton: Konfigürasyon yöneticisi veya veritabanı bağlantı havuzu gibi nesnelerin tek bir örneğini oluşturmak için.
    public final class ConfigManager {
        private static ConfigManager instance;
        private ConfigManager() {} // Özel yapıcı
        public static synchronized ConfigManager getInstance() {
            if (instance == null) {
                instance = new ConfigManager();
            }
            return instance;
        }
    }
    
  • Factory Method: Belirli özelliklere sahip nesneleri, somut sınıfları açıkça belirtmeden oluşturmak için. Dosya ayrıştırıcılarının farklı türleriyle çalışırken kullanıldı.
  • Abstract Factory: Bağlantılı veya bağımlı nesil aileleri, somut sınıflarını belirtmeden oluşturmak için. Farklı veri kaynakları (örneğin, dosya sistemi, veritabanı) ve bunlara karşılık gelen nesnelerle çalışırken uygulandı.

Yapısal desenler:

  • Adapter: Bir sınıfın arayüzünü, müşterinin beklediği başka bir arayüze uyarlamak için. Üçüncü taraf kütüphaneleri uyumsuz arayüzlerle entegre etmek için kullanıldı.
    public interface Target {
        void request();
    }
    
    public class Adaptee {
        public void specificRequest() {
            System.out.println("Adaptee'nin özel isteği");
        }
    }
    
    public class Adapter implements Target {
        private Adaptee adaptee;
    
        public Adapter(Adaptee adaptee) {
            this.adaptee = adaptee;
        }
    
        @Override
        public void request() {
            adaptee.specificRequest();
        }
    }
    
  • Decorator: Nesnelere yeni sorumluluklar dinamik olarak eklemek için. Günlük kaydı veya önbellekleme işlevselliği eklemek için kullanıldı.
  • Composite: Nesneleri ağaç yapılarında düzenleyerek "parça-bütün" hiyerarşilerini temsil etmek için. Kullanıcı arayüzü öğeleri veya dosya yapısı ile çalışırken kullanılır.

Davranışsal desenler:

  • Observer: Bir nesne durumundaki değişiklikte, bağlı olan tüm nesnelerin otomatik olarak bilgilendirilip güncellenmesini sağlayan "bir-çok" bağımlılık tanımlamak için. Olay bildirim sistemleri uygulamak için kullanıldı.
    import java.util.ArrayList;
    import java.util.List;
    
    public class Subject {
        private List<Observer> observers = new ArrayList<>();
        private int state;
    
        public void attach(Observer observer) {
            observers.add(observer);
        }
    
        public void setState(int state) {
            this.state = state;
            notifyObservers();
        }
    
        private void notifyObservers() {
            for (Observer observer : observers) {
                observer.update();
            }
        }
    }
    
    public interface Observer {
        void update();
    }
    
  • Strategy: Algoritmalar ailesini tanımlamak, her birini kapsüllemek ve bunların birbirinin yerine kullanılabilir olmasını sağlamak için. Duruma göre farklı veri işleme stratejileri seçmek için kullanıldı.
  • Template Method: Bir algoritmanın iskeletini, alt sınıflar tarafından bazı adımların tanımlanmasına izin vererek belirlemek. İstek işleme sürecini standartlaştırmak için kullanıldı.