Middle
Navedite primer implementacije paterna dizajna 'Graditelj' u C#.
sobes.tech АИ
Одговор од АИ
Шаблон "Градитељ" дели процес изградње сложеног објекта од његовог приказа тако да један те исти процес изградње може креирати различите приказе. Примењује се када је креирање објекта захтевно много корака и конфигурација.
// Апстрактни градитељ проглашава интерфејс за креирање делова објекта.
public abstract class Builder
{
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract Product GetResult();
}
// Конкретни градитељ имплементира интерфејс Builder
// и конструише и саставља делове производа.
public class ConcreteBuilder : Builder
{
private Product _product = new Product();
public override void BuildPartA()
{
_product.Add("PartA");
}
public override void BuildPartB()
{
_product.Add("PartB");
}
public override Product GetResult()
{
return _product;
}
}
// Производ представља сложен објекат који треба да буде изграђен.
public class Product
{
private List<string> _parts = new List<string>();
public void Add(string part)
{
_parts.Add(part);
}
public void ListParts()
{
Console.WriteLine("Производ делови: " + string.Join(", ", _parts));
}
}
// Директор конструише објекат помоћу интерфејса Builder.
public class Director
{
public void Construct(Builder builder)
{
builder.BuildPartA();
builder.BuildPartB();
}
}
// Пример употребе
public class Program
{
public static void Main(string[] args)
{
Director director = new Director();
ConcreteBuilder builder = new ConcreteBuilder(); // Креирамо конкретног градитеља
director.Construct(builder); // Директор руководи процесом изградње
Product result = builder.GetResult(); // Добијамо готов производ
result.ListParts(); // Испис делова производа
}
}
Основне компоненте:
- Builder: Апстрактни интерфејс за креирање делова крајњег производа.
- ConcreteBuilder: Конкретна имплементација Builder, која гради и саставља делове производа.
- Director: Класа која користи Builder за по корак конструисање објекта, не знајући његов конкретан тип.
- Product: Сложени објекат који се гради.
Овај пример показује како Director користи ConcreteBuilder за креирање Product корак по корак, одвајајући процес изградње од његовог приказа.