建造者模式
来源:互联网 发布:淘宝网店初期卖什么 编辑:程序博客网 时间:2024/06/05 09:37
建造者模式即将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式的结构图如下:
实用范围:
1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2 当构造过程必须允许被构造的对象有不同表示时。
下面是利用建造者模式实现画出不同类型的人的代码,更加直观的体现出建造者模式的特点:#include <iostream>using namespace std ;class Person //抽象类 人类{public:virtual void Draw_head() = 0 ; //纯虚函数 画头virtual void Draw_body() = 0 ; //纯虚函数 画身体virtual void Draw_arm() = 0 ; //纯虚函数 画手臂virtual void Draw_leg() = 0 ; //纯虚函数 画腿};class FatPerson : public Person //肥胖者{public:void Draw_head() {cout<<"画肥胖者的头"<<endl ; //实现纯虚函数 画头}void Draw_body() {cout<<"画肥胖者的身体"<<endl ;}void Draw_arm() {cout<<"画肥胖者的手臂"<<endl ;}void Draw_leg() {cout<<"画肥胖者的腿"<<endl ;}};class SlimPerson : public Person //苗条的人{public:void Draw_head() {cout<<"画苗条者的头"<<endl ; //实现纯虚函数 画头}void Draw_body() {cout<<"画苗条者的身体"<<endl ;}void Draw_arm() {cout<<"画苗条者的手臂"<<endl ;}void Draw_leg() {cout<<"画苗条者的腿"<<endl ;}};class Director //指导者{Person * pPerson ;public:Director(Person * myPerson):pPerson(myPerson){} //构造函数void Drawing(){pPerson->Draw_body() ;pPerson->Draw_body() ;pPerson->Draw_arm() ;pPerson->Draw_leg() ;}};int main(){cout<<"肥胖者:"<<endl ;FatPerson * pFatPerson = new FatPerson ;Director * pDirector = new Director(pFatPerson) ; //画出一个肥胖者 pDirector->Drawing() ;cout<<endl ;cout<<"苗条者:"<<endl ;SlimPerson * pSlim = new SlimPerson ;Director * pDirector2 = new Director(pSlim) ; //画出一个苗条的人pDirector2->Drawing() ;return 0 ;}
最后的输出结果为:阅读全文
0 0
- Builder 建造者模式
- 建造者模式
- 设计模式-------建造者
- 建造者模式
- 建造者模式(Builder)
- 建造者模式(Builder)
- 建造者模式
- 建造者模式 - builder
- 建造者模式
- Builder建造者模式
- 建造者模式(Builder)
- 建造者模式(builder)
- 建造者模式
- java建造者模式
- 建造者模式
- 建造者模式
- 建造者模式(Builder)
- 建造者模式
- 23种设计模式之访问者模式
- Hibernate Validator注解详解
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- 第5章 [BX]和loop指令
- 077-C++
- 建造者模式
- OpenCV 下载驿站(百度云盘下载,同步更新)
- windows下安装redis
- iPhone安装OpenSSH和远程连接教程
- [Linux]继续探究mysleep函数(竞态条件)
- GitLab工具SourceTree使用文档
- PADS覆铜管理中灌注(Flood)和填充(Hatch)有什么区别?
- android studio git使用总结 (二): 高级篇 分支管理
- js 事件流,事件处理程序,事件对象