建造者模式

1.
public abstract class PersonBuilder
{
protected Pen pen;
protected Graphics graphics;
public PersonBuilder(Pen p, Graphics gra)
{
pen = p;
graphics = gra;
}
public abstract void BuildHead();
public abstract void BuildBody();
public abstract void BuildArms();
public abstract void BuildLegs();
}
2.
public class PersonThinBuilder : PersonBuilder
{
public PersonThinBuilder(Pen p, Graphics gra) : base(p, gra)
{
}
public override void BuildArms()
{
graphics.DrawLine(pen, 60, 50, 40, 100);
graphics.DrawLine(pen, 70, 50, 90, 100);
}
public override void BuildBody()
{
graphics.DrawRectangle(pen, 60, 50, 10, 50);
}
public override void BuildHead()
{
graphics.DrawEllipse(pen, 50, 20, 30, 30);
}
public override void BuildLegs()
{
graphics.DrawLine(pen, 60, 100, 45, 150);
graphics.DrawLine(pen, 70, 100, 85, 150);
}
}
3.
/// <summary>
/// 指挥者
/// </summary>
public class PersonDirector
{
PersonBuilder per;
public PersonDirector(PersonBuilder per)
{
this.per = per;
}
public void CreatePerson()
{
per.BuildHead();
per.BuildBody();
per.BuildArms();
per.BuildLegs();
}
}
4.
Pen p = new Pen(Brushes.Red);
Graphics g = this.CreateGraphics();
PersonThinBuilder ptb = new PersonThinBuilder(p, g);
PersonDirector pd = new PersonDirector(ptb);
pd.CreatePerson();

浙公网安备 33010602011771号