Middle
C#-ში 'მშენებელი' დიზაინის ნიმუშის განხორციელების მაგალითი მიაწოდეთ.
sobes.tech AI
პასუხი AI-სგან
Դիզայներային օրինակն առանձնացնում է բարդ օբյեկտի կառուցման գործընթացը նրա ներկայացումից այնպես, որ նույն կառուցման գործընթացը կարող է ստեղծել տարբեր ներկայացումներ։ Կիրառվում է, երբ օբյեկտի ստեղծումը պահանջում է բազմաթիվ քայլեր և կոնֆիգուրացիաներ։
// Աբստրակտ կառուցողը հայտարարում է ինտերֆեյս օբյեկտի մասերի ստեղծման համար։
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-ը քայլ առ քայլ ստեղծելու համար, բաժանելով կառուցման գործընթացը նրա ներկայացումից։