Middle
Singleton-dən başqa hansı dizayn nümunələrini istifadə etdiniz?
sobes.tech Süni İntellekt
AI-dan cavab
- Fabrika Metodu. Nesneleri açıq şəkildə konkret sinf növünü göstərmədən yaratmaq üçün istifadə olunur. Obrazın yaradılması logikasının alt sinflərə bağlı olduğu hallarda əlverişlidir.
- Abstrakt Fabrika. Bir-biri ilə əlaqəli və ya asılı obyektlər ailəsini yaratmaq üçün istifadə olunur və bunun üçün interfeys təmin edir, lakin konkret sinfləri göstərmir.
- Builder. Çətin obyektləri addım-addım yaratmaq üçün istifadə olunur, burada addımların sırası və birləşməsi dəyişə bilər. "Teleskopik konstruktordan" qaçmağa imkan verir.
- Observer. Ob'ektlər arasında "birə çox" asılılıqları yaratmaq üçün həyata keçirilir; bir ob'ektin vəziyyəti dəyişdikdə, avtomatik olaraq bütün asılı ob'ektlərə bildiriş göndərir.
- Strategy. Algoritmlər ailəsini təyin etmək, hər birini inkapsulyasiya etmək və onların bir-birinin yerinə istifadə edilə bilməsini təmin etmək üçün istifadə olunur. İcrada algoritmi seçməyə imkan verir.
- Decorator. Ob'ektlərin strukturunu dəyişmədən yeni vəzifələr əlavə etmək üçün istifadə olunur.
- Proxy. Bu, ob'ektə girişə nəzarət etmək lazım olan hallarda, məsələn, tələsmədən yükləmə və ya uzaqdan giriş üçün istifadə olunur.
- Template Method. Superklassda algoritmin skeletini müəyyən etmək üçün istifadə olunur, bu zaman alt sinflar müəyyən addımları yenidən yaza bilərlər, əsas strukturu dəyişmədən.
- Adapter. Bir sinifin interfeysini müştərilərin gözlədiyi interfeysə çevirmək üçün istifadə olunur. Uyğunsuz interfeysə malik sinflərin birlikdə işləməsinə imkan verir.
- Command. Bir sorğunu obyekt kimi inkapsulyasiya etmək üçün istifadə olunur, bu da müştəriləri müxtəlif sorğularla parametrizə etməyə, sorğuları növbəyə qoymağa və əməliyyatların qeydini tutmağa və əməliyyatların ləğvini dəstəkləməyə imkan verir.
Factory Method nümunəsi:
// Məhsul interfeysi
interface Product {
void doSomething();
}
// Konkret məhsullar
class ConcreteProductA implements Product {
@Override
public void doSomething() {
System.out.println("Product A-də bir şey edir");
}
}
class ConcreteProductB implements Product {
@Override
public void doSomething() {
System.out.println("Product B-də bir şey edir");
}
}
// Fabrika interfeysi
abstract class Creator {
public abstract Product factoryMethod();
public void someOperation() {
Product product = factoryMethod();
product.doSomething();
}
}
// Konkret fabrikalar
class ConcreteCreatorA extends Creator {
@Override
public Product factoryMethod() {
return new ConcreteProductA();
}
}
class ConcreteCreatorB extends Creator {
@Override
public Product factoryMethod() {
return new ConcreteProductB();
}
}