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();
}
}