Вот мой класс фабричного метода.
public class AFactory : FactoryBase {
public override ProductBase ProduceProdut() {
return new SuperCoolProduct();
}
}
Вот мой класс строителей.
public class ABuilder : BuilderBase {
ProductBase product = new SuperCoolProduct()
public override void BuildStep1() {
//Do Something (e.g. product.Add() )
}
public override void BuildStep2() {
//Do some more...(e.g. product.AddMore() )
}
public override ProductBase GetFinalProduct() {
return product;
}
}
Мои вопросы следующие ~
1) Должен ли застройщик предоставить некоторые методы, которые директор может вызвать для создания композиции?
Может ли этот класс все еще рассматриваться как класс строителя? Или, мы должны назвать это как фабричный класс? Я думаю, что мы больше не можем называть этот класс ниже как конструктор, и теперь это фабричный класс ..
public class ABuilder : BuilderBase {
ProductBase product = new SuperCoolProduct();
public override ProductBase GetFinalProduct() {
BuildStep1();
BuildStep2();
return product;
}
private void BuildStep1() {
//Do Something (e.g. product.Add() )
}
private void BuildStep2() {
//Do some more...(e.g. product.AddMore() )
}
}
2) Будет ли приведенный ниже код хорошим примером сочетания шаблона «Построитель» и «Фабричный метод»?
public class AFactory : FactoryBase {
BuilderBase builder;
public AFactory(BuilderBase builder){
this.builder = builder;
}
public override ProductBase ProduceProdut() {
this.builder.BuildStep1();
this.builder.BuildStep1();
return this.builder.GetFinalProduct();
}
}