Sobes.tech
Middle

Singletondan tashqari qaysi dizayn shablonlarini ishlatdingiz?

sobes.tech AI

AIdan javob

  • Fabrika Metodi. Ob'ektlarni aniq klass turi ko'rsatilmasdan yaratish uchun ishlatiladi. Ob'ekt yaratish logikasi vorisliklarga bog'liq bo'lganda qulay.
  • Abstrakt Fabrika. Bir-biri bilan bog'liq yoki bog'liq bo'lmagan ob'ektlar oilasini yaratish uchun qo'llaniladi, bu uchun interfeys taqdim etadi, ammo aniq klasslarni ko'rsatmaydi.
  • Builder. Murakkab ob'ektlarni bosqichma-bosqich yaratish uchun ishlatiladi, bu yerda bosqichlar tartibi va kombinatsiyasi o'zgarishi mumkin. "Teleskopik konstruktor" muammosidan qochish imkonini beradi.
  • Observer. Ob'ektlar o'rtasida "birga ko'p" bog'liqliklarni yaratish uchun amalga oshiriladi, bunda bir ob'ektning holati o'zgarganda, avtomatik ravishda barcha bog'liq ob'ektlar xabardor qilinadi.
  • Strategy. Algoritmlar oilasini belgilash, har birini inkapsulyatsiya qilish va ularning o'zaro almashtirilishini ta'minlash uchun qo'llaniladi. Ishga tushirish vaqtida algoritmni tanlash imkonini beradi.
  • Decorator. Ob'ektlarga dinamik ravishda yangi mas'uliyatlar qo'shish uchun ishlatiladi, ularning tuzilishini o'zgartirmasdan.
  • Proxy. Ob'ektga kirishni nazorat qilish zarur bo'lganda, masalan, kechikib yuklash yoki masofaviy kirishni ta'minlash uchun qo'llaniladi.
  • Template Method. Superklassda algoritm skeletini belgilash uchun ishlatiladi, bu yerda vorislar algoritmning ma'lum bosqichlarini qayta yozishlari mumkin, asosiy tuzilmani o'zgartirmasdan.
  • Adapter. Bir klassning interfeysini mijozlar kutayotgan interfeysga aylantirish uchun qo'llaniladi. Mos kelmaydigan interfeyslar bilan ishlash imkonini beradi.
  • Command. So'rovni ob'ekt shaklida inkapsulyatsiya qilish uchun ishlatiladi, bu esa mijozlarni turli so'rovlar bilan parametrizatsiya qilish, so'rovlarni navbatga qo'yish yoki operatsiyalarni jurnal qilish va bekor qilishni qo'llab-quvvatlash imkonini beradi.

Factory Method ning misol implementatsiyasi:

// Mahsulot interfeysi
interface Product {
    void doSomething();
}

// Aniq mahsulotlar
class ConcreteProductA implements Product {
    @Override
    public void doSomething() {
        System.out.println("Product A da bir narsa qiladi");
    }
}

class ConcreteProductB implements Product {
    @Override
    public void doSomething() {
        System.out.println("Product B da bir narsa qiladi");
    }
}

// Fabrika interfeysi
abstract class Creator {
    public abstract Product factoryMethod();

    public void someOperation() {
        Product product = factoryMethod();
        product.doSomething();
    }
}

// Aniq fabrikalar
class ConcreteCreatorA extends Creator {
    @Override
    public Product factoryMethod() {
        return new ConcreteProductA();
    }
}

class ConcreteCreatorB extends Creator {
    @Override
    public Product factoryMethod() {
        return new ConcreteProductB();
    }
}