Factory Builder жобалау үлгісі дегеніміз не?
sobes.tech AI
AI-дан жауап
Factory Builder паттерні немесе көбінесе Factory Method және Builder үйлесімі — күрделі объектілерді құруды жақсартатын екі паттерннің комбинациясы.
Factory Method объектіні құру үшін интерфейс анықтайды, бірақ қай кластың экземплярын жасау керектігін ұрпақтар шешеді. Ол объектіні құру жауапкершілігін ұрпақтарға жүктейді.
Builder күрделі объектінің құрылысын оның көрінісінен бөледі, сондықтан бірдей құрылыс процесі әртүрлі көріністерді құра алады. Ол объектіні қадам-қадаммен құруға мүмкіндік береді, әдістер тізбегін пайдалана отырып.
Бұл паттерндердің үйлесімі көбінесе күрделі объектінің бірнеше нұсқасын құру қажет болған сценарийлерде кездеседі. Factory Method қай Builder түрі қолданылатынын анықтайды, ал Builder содан кейін сол типтегі объектіні әртүрлі конфигурациялармен қалай құру керектігін жүзеге асырады.
Мысал қолдану: Егер сізде күрделі иерархиядағы объектілер болса, оларды әртүрлі конфигурациялармен құру керек болса.
Әрекеттестік құрылымы:
- Фабрика: нақты Builder-дың экземплярын қайтару үшін әдіс бар, ол кіріс параметрлеріне немесе өзінің түріне байланысты.
- Builder: күрделі объектінің параметрлерін қадам-қадаммен баптау әдістері және дайын объектіні қайтару үшін
build()әдісі бар. - Өнім: Builder арқылы жасалатын күрделі объект.
Артықшылықтары:
- Күрделі объектілерді құру кезінде кодтың оқылуын және басқарылуын жақсарту.
- Бір типтегі объектінің әртүрлі конфигурацияларын құруға икемділік.
- Объектіні құру логикасын оның көрінісінен бөлу.
- Жаңа өнім түрлерін (Factory Method пайдалана отырып) немесе жаңа құрылыс тәсілдерін (Builder пайдалана отырып) оңай қосу.
Кемшіліктері:
- Жобадағы сыныптар санын арттыру.
- Қарапайым объектілер үшін артық болуы мүмкін.
Псевдокод мысалы:
// Өнім
class ComplexObject {
private String partA;
private int partB;
// жеке конструктор
private ComplexObject(String partA, int partB) {
this.partA = partA;
this.partB = partB;
}
// ішкі Builder класы
public static class Builder {
private String partA;
private int partB;
public Builder setPartA(String partA) {
this.partA = partA;
return this;
}
public Builder setPartB(int partB) {
this.partB = partB;
return this;
}
public ComplexObject build() {
return new ComplexObject(partA, partB);
}
}
}
// Фабрика, Builder қайтарушы
class ComplexObjectFactory {
public static ComplexObject.Builder createDefaultBuilder() {
return new ComplexObject.Builder()
.setPartA("defaultA")
.setPartB(10);
}
public static ComplexObject.Builder createSpecialBuilder() {
return new ComplexObject.Builder()
.setPartA("specialA")
.setPartB(50);
}
}
// Қолдану:
// ComplexObject obj1 = ComplexObjectFactory.createDefaultBuilder().build();
// ComplexObject obj2 = ComplexObjectFactory.createSpecialBuilder().setPartA("customA").build();