博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
建造者模式(Builder)-设计模式(三)
阅读量:4186 次
发布时间:2019-05-26

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

今天我们来学习建造者模式,首先当然是一大堆基本没意义的解析:

作用:
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
适用于以下情况:
1)当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2)当构造过程必须允许被构造的对象有不同的表示时。
抽象基类:
1)Builder:这个基类是全部创建对象过程的抽象,提供构建不同组成部分的接口函数
接口:
1)Builder::BuildPartA,Builder::BuildPartB:是对一个对象不同部分的构建函数
接口,Builder 的派生类来具体实现.
另外还有一个需要注意的函数,就是 Director::Construct 函数,这个函数里面通过调
用上面的两个接口函数完成对象的构建–也就是说各个不同部分装配的过程都是一致的
( 同样的调用的 Construct 函数),但是不同的构建方式会有不同的表示(根据 Builder
的实际类型来决定如何构建,也就是多态)
废话说完了就要举个栗子啦!
一根炸鸡腿,有里面的鸡腿、外面的面皮、还有调料啥的都可以看做是炸鸡腿的不同组成部分,当然这里的炸鸡腿就是一个对象。不同的店呢,比如说肯德基和麦当劳生产的炸鸡腿是不一样的,这就是不同的构建方法,但是炸鸡腿的组成是差不多,你当然没见过面皮在里、鸡腿在外面的炸鸡腿咯。所以,他们的构建过程是一样的(炸鸡腿的组成),即各部分的装配方式。具体的装配是怎样的,当然是有炸鸡腿决定的咯!
看一看实现咯!

#include 
using namespace std;class Product{ public: Product() { ProducePart(); cout<<"生产炸鸡腿"<
BuildPartA("肯德基抹面皮"); _bld->BuildPartB("肯德基撒调料"); } private: Builder* _bld;};int main(){ Director* d = new Director(new ConcreteBuilder()); d->Construct(); return 0;}

这里写图片描述

这里写图片描述

你可能感兴趣的文章
国际化编程中Locale相关概念的一些解释
查看>>
PIA (Primary Interop Assembly) & AIA (Alternate Interop Assembly)简介
查看>>
“妖精”团队———阿里巴巴
查看>>
迟到的感谢——2006最有价值博客的候选人(& 个人回顾)
查看>>
第29回 软件质量度量
查看>>
IT 2007预言
查看>>
怎样让.Net2.0的Membership使用已存在的Sql Server2000/2005数据库
查看>>
ASP.NET2.0 文本编辑器FCKeditor使用方法详解
查看>>
常见的 Web 项目转换问题及解决方案
查看>>
VS2005中使用ClickOnce 部署应用程序的升级
查看>>
Visual Studio2005下配置及运行NUnit
查看>>
.Net Remoting配置文件的用法
查看>>
Tomcat性能调整优化
查看>>
利用SQL Server 2005减轻生产服务器优化负荷
查看>>
优化MYSQL服务器
查看>>
Exchange磁盘性能优化
查看>>
Apusic应用服务器的性能调节_JVM优化
查看>>
Apache重负荷服务器应如何优化?
查看>>
Windows NT/2000服务器优化
查看>>
Windows 2003系统优化技巧
查看>>