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.