Middle+
Dizayn shablonlarini ishlatib qanday vazifalarni hal qildingiz?
sobes.tech AI
AIdan javob
Kodning tuzilishini va ushlab qolish imkoniyatlarini yaxshilash uchun turli naqshlarni qoʻlladi:
Yaratish naqshlari:
- Singleton: Konfiguratsiya menejeri yoki ma'lumotlar bazasi ulanishlar havzasi kabi ob'ektlarning yagona nusxasini yaratish uchun.
public final class ConfigManager { private static ConfigManager instance; private ConfigManager() {} // Xususiy konstruktor public static synchronized ConfigManager getInstance() { if (instance == null) { instance = new ConfigManager(); } return instance; } } - Factory Method: Aniq xususiyatlarga ega ob'ektlarni, aniq sinflarni ochiq ko'rsatmasdan yaratish uchun. Fayl parserlarining turli turlarini ishlashda foydalanilgan.
- Abstract Factory: Bog'liq yoki bog'liq bo'lmagan ob'ektlar oilalarini, ularning aniq sinflarini ko'rsatmasdan yaratish uchun. Turli ma'lumot manbalari (masalan, fayl tizimi, ma'lumotlar bazasi) va ularning mos ob'ektlari bilan ishlashda qo'llanilgan.
Struktural naqshlar:
- Adapter: Bir sinfning interfeysini, mijoz kutayotgan boshqa interfeysga moslashtirish uchun. Uchinchi tomon kutubxonalarini mos kelmaydigan interfeyslar bilan integratsiya qilish uchun ishlatilgan.
public interface Target { void request(); } public class Adaptee { public void specificRequest() { System.out.println("Adaptee ning maxsus so'rovi"); } } public class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public void request() { adaptee.specificRequest(); } } - Decorator: Ob'ektlarga dinamik ravishda yangi mas'uliyatlar qo'shish uchun. Mavjud ob'ektlarga loglash yoki kesh funksiyalarini qo'shish uchun ishlatilgan.
- Composite: Ob'ektlarni daraxt tuzilmalariga birlashtirish uchun, "qism-butun" hierarxiyalarini tasvirlash uchun. Foydalanuvchi interfeysi elementlari yoki fayl tuzilmasi bilan ishlashda qo'llaniladi.
Xulq-atvor naqshlari:
- Observer: Bir ob'ektning holatidagi o'zgarishda, uning bog'liq bo'lgan barcha ob'ektlar avtomatik ravishda bildirilishi va yangilanishi uchun "bir-ko'p" bog'liqlikni aniqlash. Hodisalar haqida bildirish tizimlarini amalga oshirish uchun ishlatilgan.
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: Algoritmlar oilasini aniqlash, har birini kapsulalash va ularning o'zaro almashtirilishini ta'minlash uchun. Ma'lumotlarni turli strategiyalar bilan ishlash uchun tanlashda ishlatilgan.
- Template Method: Bir operatsiyada algoritm skeletini aniqlash, ba'zi bosqichlarni subklasslar tomonidan aniqlash uchun. So'rovlarni ishlash jarayonini standartlashtirish uchun qo'llanilgan.