Middle
Құрылымдау үлгілері дегеніміз не?
sobes.tech AI
AI-дан жауап
Шаблондар (паттерндер) жобалау — бұл объекті-бағытталған бағдарламалауда жиі кездесетін мәселелерді бірнеше рет тексерілген типтік шешімдер. Олар дайын қолдануға арналған кітапханалар немесе фреймворктер емес, керісінше, нақты тапсырмаға бейімделетін концепциялар немесе "рецепттер" болып табылады.
Паттерндер сыныптар мен объектілер арасындағы қатынастарға назар аударады. Олар үш негізгі санатқа бөлінеді:
- Тудыратын (Creational): Объектілерді құруға арналған шаблондар.
- Фабрика әдісі (Factory Method)
- Абстрактты фабрика (Abstract Factory)
- Жалғыз (Singleton)
- Құрастырушы (Builder)
- Прототип (Prototype)
- Құрылымдық (Structural): сыныптар мен объектілерді ірі құрылымдарға ұйымдастыруға арналған шаблондар.
- Адаптер (Adapter)
- Көпір (Bridge)
- Құрастырушы (Composite)
- Декоратор (Decorator)
- Фасад (Facade)
- Ұшқыр (Flyweight)
- Айналдырушы (Proxy)
- Әрекеттік (Behavioral): алгоритмдер мен сыныптар мен объектілер арасындағы өзара әрекеттесу тәсілдеріне арналған шаблондар.
- Жауапкершілік тізбегі (Chain of Responsibility)
- Команда (Command)
- Итератор (Iterator)
- Ортақ (Mediator)
- Еске сақтау (Memento)
- Қадағалаушы (Observer)
- Құрылым (State)
- Стратегия (Strategy)
- Үлгі әдісі (Template Method)
- Қонақ (Visitor)
Жобалау шаблондарын қолдану кодты икемді, кеңейтілген және қолдауға оңай етуге, оның оқылуын жақсартуға және жоба бойынша бірлескен жұмысты жеңілдетуге мүмкіндік береді.
Мысалы, Singleton паттерні сыныпта тек бір ғана экземпляр болуын қамтамасыз етеді және оған ғаламдық қол жеткізуді ұсынады.
// Java-да Singleton мысалы
class Singleton {
private static Singleton instance; // Бірегей экземпляр
private Singleton() {
// Жеке конструктор жаңа экземплярлардың құрылуын болдырмау үшін
}
public static Singleton getInstance() {
if (instance == null) { // Бірінші шақыру кезінде экземплярды құру
instance = new Singleton();
}
return instance; // Бірегей экземплярды қайтару
}
public void showMessage() {
System.out.println("Singleton-тен сәлем!" );
}
}