well i have a code sample of Builder Pattern like this
class Director
{
// Build a Product from several parts
public void Construct(IBuilder builder)
{
builder.BuildPartA();
builder.BuildPartB();
builder.BuildPartB();
}
}
interface IBuilder
{
void BuildPartA();
void BuildPartB();
Product GetResult();
}
class Builder1 : IBuilder
{
private Product product = new Product();
public void BuildPartA()
{
product.Add("PartA ");
}
public void BuildPartB()
{
product.Add("PartB ");
}
public Product GetResult()
{
return product;
}
}
class Builder2 : IBuilder
{
private Product product = new Product();
public void BuildPartA()
{
product.Add("PartX ");
}
public void BuildPartB()
{
product.Add("PartY ");
}
public Product GetResult()
{
return product;
}
}
class Product
{
List<string> parts = new List<string>();
public void Add(string part)
{
parts.Add(part);
}
public void Display()
{
Console.WriteLine("\nProduct Parts -------");
foreach (string part in parts)
Console.Write(part);
Console.WriteLine();
}
}
public class Client
{
public static void Main()
{
// Create one director and two builders
Director director = new Director();
IBuilder b1 = new Builder1();
IBuilder b2 = new Builder2();
// Construct two products
director.Construct(b1);
Product p1 = b1.GetResult();
p1.Display();
director.Construct(b2);
Product p2 = b2.GetResult();
p2.Display();
Console.Read();
}
}
Now, i have made some changes in the above code. Is the below code still represent a Builder Pattern?
class Director
{
public void Construct(IBuilder builder)
{
builder.BuildPartA();
builder.BuildPartB();
builder.GetResult();
}
}
interface IBuilder
{
void BuildPartA();
void BuildPartB();
void GetResult();
}
class Builder1 : IBuilder
{
List<string> product = new List<string>();
public void BuildPartA()
{
product.Add("PartA ");
}
public void BuildPartB()
{
product.Add("PartB ");
}
public void GetResult()
{
foreach (var p in product)
{
Console.WriteLine("the product created is :" + p);
}
}
}
class Builder2 : IBuilder
{
List<string> product = new List<string>();
public void BuildPartA()
{
product.Add("PartX ");
}
public void BuildPartB()
{
product.Add("PartY ");
}
public void GetResult()
{
foreach (var p in product)
{
Console.WriteLine("the product created is :" + p);
}
}
}
public class Client
{
public static void Main()
{
Director director = new Director();
IBuilder b1 = new Builder1();
IBuilder b2 = new Builder2();
director.Construct(b1);
director.Construct(b2);
Console.Read();
}
}
note:
I have removed the product class from the second sample code.
Aucun commentaire:
Enregistrer un commentaire