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

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

1.介绍

这个模式,非常有用。

有时候,你的一个类,有许多函数功能,你又不希望在这个类里面再增加一个管理函数调用的接口,但你又不希望用全局变量来操作这批函数,怎么办?

你还可以用建造者模式。

2.具体使用说明

最经典的例子,莫过于《effective C++》条款23,宁以non-member,non-friend替换member函数。

我就是从这里学的建造者模式。虽然在Meyers大师的书中,没有在此处提到建造者模式,但我认为这里非常符合建造者模式的设计思路。

在书中的P100~P101提到:

在C++,比较自然的做法是.....所在同一个namespace(命名空间)内。要知道,namespace和classes不同,前者可跨越多个源码文件而后者不能。这很重要,....

将所有便利函数放在多个头文件内但隶属同一个命名空间,意味着客户可以轻松扩展这一组便利函数。

3.网络上常见的好理解的代码

class Builder    {  public:      virtual void BuildHead() {}      virtual void BuildBody() {}      virtual void BuildLeftArm(){}      virtual void BuildRightArm() {}      virtual void BuildLeftLeg() {}      virtual void BuildRightLeg() {}  };  //构造瘦人  class ThinBuilder : public Builder  {  public:      void BuildHead() { cout<<"build thin body"<
BuildHead(); m_pBuilder->BuildBody(); m_pBuilder->BuildLeftArm(); m_pBuilder->BuildRightArm(); m_pBuilder->BuildLeftLeg(); m_pBuilder->BuildRightLeg(); } }; int main() { FatBuilder thin; Director director(&thin); director.Create(); return 0; }//

4. 我理解的建造者模式的代码

namespace WebBrowserStuff {

class WebBrowser {...};

void doSomething(WebBrowser& wb);

}

你可以把你要建造的全部函数功能,写道类里面。

然后,你把你要组装时,用到某些函数,写道namespace里面,这样,就非常方便自己组合了,用什么功能,不用什么功能,就在doSomething()这个函数里面,随意使用就好,完全不会破坏原来的类WebBrowser的封装性,实现了高内聚-低耦合。

------------------------

转载地址:http://rzoji.baihongyu.com/

你可能感兴趣的文章
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
能源化工要怎么管控核心数据
查看>>
媒体广告业如何运用云盘提升效率
查看>>
企业如何运用企业云盘进行数字化转型-实现新发展
查看>>
司法如何运用电子智能化加快现代化建设
查看>>
iSecret&nbsp;1.1&nbsp;正在审核中
查看>>
IOS开发的开源库
查看>>
IOS开发的开源库
查看>>
Jenkins - sonarqube 代码审查
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成(一)
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成 - 单机部署(二)
查看>>