Sobes.tech
Middle+

Tərtib nümunələrindən istifadə edərək hansı tapşırıqları həll etdiniz?

sobes.tech Süni İntellekt

AI-dan cavab

Müxtəlif nümunələr tətbiq etdim kodun quruluşunu və dəstəklənməsini yaxşılaşdırmaq üçün:

Yaradanlar:

  • Singleton: Bir tək nümunənin yaradılması üçün, məsələn, konfiqurasiya meneceri və ya verilənlər bazası bağlantı hovuzu.
    public final class ConfigManager {
        private static ConfigManager instance;
        private ConfigManager() {} // Özəl konstruktor
        public static synchronized ConfigManager getInstance() {
            if (instance == null) {
                instance = new ConfigManager();
            }
            return instance;
        }
    }
    
  • Factory Method: Müəyyən xüsusiyyətlərə malik obyektlərin yaradılması üçün, konkret sinifləri açıq göstərmədən. Fayl parserlərinin müxtəlif növləri ilə işləyərkən istifadə olunurdu.
  • Abstract Factory: Əlaqəli və ya asılı obyektlərin ailələrini, onların konkret siniflərini göstərmədən yaratmaq üçün. Müxtəlif məlumat mənbələri (məsələn, fayl sistemi, verilənlər bazası) və onlara uyğun obyektlərlə işləyərkən tətbiq olunurdu.

Strukturalar:

  • Adapter: Bir sinifin interfeysini digərinə uyğunlaşdırmaq üçün, müştərinin gözlədiyi kimi. Xarici kitabxanaların uyğunsuz interfeysləri ilə inteqrasiya üçün istifadə olunurdu.
    public interface Target {
        void request();
    }
    
    public class Adaptee {
        public void specificRequest() {
            System.out.println("Adaptee-nin xüsusi tələbi");
        }
    }
    
    public class Adapter implements Target {
        private Adaptee adaptee;
    
        public Adapter(Adaptee adaptee) {
            this.adaptee = adaptee;
        }
    
        @Override
        public void request() {
            adaptee.specificRequest();
        }
    }
    
  • Decorator: Obyektlərə dinamik olaraq yeni vəzifələr əlavə etmək üçün, onların quruluşunu dəyişmədən. Jurnallaşdırma və ya keşik funksionallığını mövcud obyektlərə əlavə etmək üçün istifadə olunurdu.
  • Composite: Obyektləri ağac strukturlarında birləşdirmək üçün, "hissə-bütöv" hierarxiyalarını nümayiş etdirmək. İstifadəçi interfeysi elementləri və ya fayl strukturu ilə işləyərkən.

Davranışlar:

  • Observer: Bir obyektin vəziyyətində dəyişiklik olduqda, ona bağlı olanların hamısına xəbərdar etmək və avtomatik yeniləmək üçün. Hadisə bildiriş sistemini həyata keçirmək üçün istifadə olunurdu.
    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: Alqoritmlərin ailəsini müəyyən etmək, hər birini kapsülləmək və onların yerinə yetirilməsini təmin etmək. Məlumatların işlənməsi üçün müxtəlif strategiyaları seçmək üçün istifadə olunurdu.
  • Template Method: Alqoritmin skeletini müəyyən etmək, bəzi addımları alt siniflərə buraxmaq. Sorğu işləmə prosesini standartlaşdırmaq üçün tətbiq olunurdu.