Sobes.tech
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.