博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
建造者模式
阅读量:6637 次
发布时间:2019-06-25

本文共 862 字,大约阅读时间需要 2 分钟。

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

从建造者模式的定义来看,肯定是一头雾水,说的都是什么跟什么呀!举个小例来理解下:当我们来实现一个画画的功能,要求画瘦的人和胖的人。画的过程是稳定的,即:头、胳膊、身体、腿都是必须的。而画的具体实现是不一样的,例如:头大、肚子大、腿长等。这时再去理解建造者模式的定义就简单多了。

 

UML图:

 

Builder抽象类中定义各个部分的方法的抽象方法(例:定义了画胳膊、画头、画腿等方法)。

ConcreteBuilder类是各种不一样具体表示,它具体实现了Builder中的方法,并且返回一个结果。(例:实现了具体画怎样的头、胳膊、腿等,并返回构造的这个人)
product类是具体产品,即:要建造的产品。例:头、胳膊、腿等都是要建造人

 

代码:

 

 
抽象建造者类:Builder

 

 
具体建造者类:ConcreteBuilderA
 
具体建造者类:ConcreteBuilderB
 
产品类:Person
 
指挥者类:Director

执行:

static void Main(string[] args)        {            Director director = new Director();            ConcreteBuilderA a = new ConcreteBuilderA();            director.Construct(a);            Object p = a.GetResult();        }

  上述执行代码中,首先创建执行者类,再创建一个具体建造者类,然后由执行者类调用Construct方法去执行建造。而最后通过具体建造者类的GetResult方法获得了建造的结果。

本文转自武沛齐博客园博客,原文链接:http://www.cnblogs.com/wupeiqi/p/3355216.html,如需转载请自行联系原作者

你可能感兴趣的文章
基础学习笔记之opencv(15):离散傅里叶变换
查看>>
PHP实现mb_substr函数
查看>>
Html.RenderPartial和Html.Partial在Razor视图中的区别
查看>>
位运算枚举解决象棋将帅问题
查看>>
更改TabHost标签的背景
查看>>
linux几种快速清空文件内容的方法 - nanyun2010的专栏 - 博客频道 - CSDN.NET
查看>>
java linq
查看>>
好的编程风格
查看>>
解决在VS2008中“当前不会命中断点,源代码与原始版本不同”的问题
查看>>
#include "stdafx.h" 错误?
查看>>
getResource()和getResourceAsStream的路径问题
查看>>
第45周星期一工作小结
查看>>
堆排序C语言
查看>>
Oracle Update 语句语法与性能分析 - 多表关联
查看>>
DOS命令下获取远程主机MAC地址的三种方法
查看>>
VB6.0 在代码中直接调用 文件打开对话框,不使用windows控件
查看>>
bootstrap源码学习与示例:bootstrap-collapse
查看>>
在VC中定制Doxygen注释宏
查看>>
debian下安装wps office
查看>>
java 获取网络servelt 返回下载文件大小
查看>>