设计模式(九)——建造者模式

来源:互联网 发布:mac软件要怎么下载 编辑:程序博客网 时间:2024/06/06 10:16

建造者模式(Builder)

建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

代码

我们通过一个小程序来阐述建造者模式。
1.代码如下:

造人抽象类

using System;namespace Builder{//造人抽象类public abstract class PersonBuilder{//画布类protected Graphics g;//画笔protected Pen p;public PersonBuilder(Graphics g,Pen p){this.g=g;this.p = p;}//头public abstract void BuildHead();//身体public abstract void BuildBody();//左胳膊public abstract void BuildArmLeft();//右胳膊public abstract void BuildArmRight();//左腿public abstract void BuildLegLeft();//右腿public abstract void BuildLegRight();}}

瘦人类

using System;namespace Builder{//瘦人public class PersonThinBuilder:PersonBuilder{public PersonThinBuilder (Graphics g,Pen p):base(g,p){}public override void BuildeHead(){g.DrawEllipse(p,50,20,30,30);}public override void BuildBody (){g.DrawRectangle (p, 60, 50, 10, 50);}public override void BuildArmLeft (){g.DrawLine (p, 60, 50, 40, 100);}public override void BuildArmRight (){g.DrawLine (p, 70, 50, 90, 100);}public override void BuildLegLeft (){g.DrawLine (p, 60, 100, 45, 150);}public override void BuildLegRight (){g.DrawLine (p, 70, 100, 85, 150);}}}

胖人类

using System;namespace Builder{//胖人public class PersonFatBuilder:PersonBuilder{public PersonFatBuilder (Graphics g,Pen p):base(g,p){}public override void BuildeHead(){g.DrawEllipse(p,50,20,30,30);}public override void BuildBody (){g.DrawRectangle (p, 45, 50, 40, 50);}public override void BuildArmLeft (){g.DrawLine (p, 50, 50, 30, 100);}public override void BuildArmRight (){g.DrawLine (p, 80, 50, 100, 100);}public override void BuildLegLeft (){g.DrawLine (p, 60, 100, 45, 150);}public override void BuildLegRight (){g.DrawLine (p, 70, 100, 85, 150);}}}

造人指挥者类

using System;namespace Builder{//造人指挥者public class PersonDirector{private PersonBuilder personBuilder;public PersonDirector (PersonBuilder personBuilder){this.personBuilder = personBuilder;}public void CreatePerson(){personBuilder.BuildHead();personBuilder.BuildBody ();personBuilder.BuildArmLeft ();personBuilder.BuildArmRight ();personBuilder.BuildLegLeft ();personBuilder.BuildLegRight ();}}}
2.客户端类
using System;namespace Builder{class MainClass{public static void Main (string[] args){Pen p = new Pen (Color.Yellow);PersonThinBuilder personThinBuilder = new PersonThinBuilder (pictureBox1.CreateGraphics (), p);PersonDirector personDirectorThin=new PersonDirector(PersonThinBuilder);personDirectorThin.CreatePerson ();PersonFatBuilder personFatBuilder = new PersonFatBuilder (pictureBox1.CreateGraphics (), p);PersonDirector personDirectorFat=new PersonDirector(personFatBuilder);personDirectorFat.CreatePerson ();}}}

UML图

源码下载地址:https://gitee.com/ZhaoYongshuang/DesignPattern.git
原创粉丝点击