Middle
Singleton dışında hangi tasarım desenlerini kullandınız?
sobes.tech yapay zeka
AI'dan gelen yanıt
- Fabrika Yöntemi. Nesneleri açıkça belirli sınıf türünü belirtmeden oluşturmak için kullanılır. Nesne oluşturma mantığının alt sınıflara bağlı olduğu durumlarda uygundur.
- Soyut Fabrika. Birbirine bağlı veya bağımlı nesil aileleri oluşturmak için kullanılır ve bunun için bir arayüz sağlar, ancak belirli sınıfları belirtmez.
- Builder. Karmaşık nesneleri adım adım oluşturmak için kullanılır, adımların sırası ve kombinasyonu değişebilir. "Teleskopik yapıcı" sorununu önler.
- Gözlemci (Observer). Nesneler arasında "birden çoğa" bağımlılıkları oluşturmak için uygulanır; bir nesnenin durumu değiştiğinde, tüm bağımlı nesneler otomatik olarak bilgilendirilir.
- Strateji (Strategy). Algoritmalar ailesini tanımlamak, her birini kapsüllemek ve bunların birbirinin yerine kullanılabilirliğini sağlamak için kullanılır. Çalışma zamanında algoritma seçimine imkan tanır.
- Dekoratör (Decorator). Nesnelerin yapısını değiştirmeden yeni sorumluluklar eklemek için kullanılır.
- Proxy. Erişimi kontrol etmek gereken durumlarda kullanılır, örneğin, tembel yükleme veya uzak erişim için.
- Şablon Yöntemi (Template Method). Algoritmanın iskeletini üst sınıfta tanımlamak ve alt sınıfların belirli adımları yeniden tanımlamasına izin vermek için kullanılır.
- Adaptör (Adapter). Bir sınıfın arayüzünü, müşterilerin beklediği arayüze dönüştürmek için kullanılır. Uyumsuz arayüzlere sahip sınıfların birlikte çalışmasını sağlar.
- Komut (Command). Bir isteği nesne biçiminde kapsüller, böylece farklı isteklerle istemcileri parametreleyebilir, istekleri sıraya koyabilir veya işlem günlükleri tutabilir ve işlemleri geri almayı destekleyebilir.
Fabrika Yöntemi örneği:
// Ürün arayüzü
interface Product {
void doSomething();
}
// Somut ürünler
class ConcreteProductA implements Product {
@Override
public void doSomething() {
System.out.println("Product A'da bir şey yapar");
}
}
class ConcreteProductB implements Product {
@Override
public void doSomething() {
System.out.println("Product B'da bir şey yapar");
}
}
// Fabrika arayüzü
abstract class Creator {
public abstract Product factoryMethod();
public void someOperation() {
Product product = factoryMethod();
product.doSomething();
}
}
// Somut fabrikalar
class ConcreteCreatorA extends Creator {
@Override
public Product factoryMethod() {
return new ConcreteProductA();
}
}
class ConcreteCreatorB extends Creator {
@Override
public Product factoryMethod() {
return new ConcreteProductB();
}
}