设计模式(九)——建造者模式
来源:互联网 发布: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
阅读全文
1 0
- 设计模式笔记(九) —— 建造者模式
- 设计模式(九)——建造者模式
- 设计模式—建造者模式(九)
- 设计模式(九)建造者模式
- 设计模式(九):建造者模式
- 九、建造者模式——设计模式学习笔记
- Java设计模式《九》建造者模式
- 设计模式实现(九)--- 建造者模式(Builder)
- 设计模式之(九、建造者模式Builder)
- 设计模式之python版(九)--建造者模式
- java设计模式(九)--建造者模式
- (九)建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- 设计模式——建造者模式
- java基础(14)- 线程基础
- 详细完整的辩解网站seo被K的九大原因
- logback的使用和logback.xml详解
- Spark作业流源码剖析
- ToLua源码分析:启动流程
- 设计模式(九)——建造者模式
- Workaround to view unavailable Android SDK 26 source code
- NEW关键字的三种用法
- 机器学习(3)机器学习算法目录
- rbd file input output test
- JAVA设计模式之责任链模式
- 计算该日是该年的第几天(结构体)
- gulp babel转es6 Cannot find module 'lodash/assign'
- Intellij IDEA如何使用Maven Tomcat Plugin运行web项目