当前位置: 首页 > news >正文

网站首页三张海报做多大足球世界积分榜

网站首页三张海报做多大,足球世界积分榜,wordpress 按时间类别,公司网站建设目的和意义设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。 设计思想 ​ 将一个复杂对象的构建与其表示相分离&…

设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。

设计思想

​ 将一个复杂对象的构建与其表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化)

动机

在软件系统中,有时候面临着“一个复杂对象” 的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定

如何应对这种变化,如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保证系统中的“稳定构建算法”不随着需求改变而改变?

结构

img

要点总结

Builder 模式主要用于“分步骤构建一个复杂的对象”。在这其中“ 分步骤 ”是一个稳定的算法,而复杂对象的各个部分则经常变化

变化点在哪里,封装就在哪里 — Builder 模式主要在于应对“复杂对象各个部分”的频繁需求变动。其缺点在于难以应对“分步骤构建算法”的需求变动

在Builder 模式中,要注意不同语言中构造器内调用抽象方法的差别。

业务场景

假如你要建房子,建房子需要打地基,需要买建材垒墙,需要造窗户等等,构造一个“房子”对象似乎并不是一件简单的事情…而现在,需要你用不同建材的材料分别去建房子,这些过程一样,但是材料不一样,该如何设计?

代码案例

#include <iostream>
#include <memory>
#include <vector>
using namespace std;class House
{
public:House() {}~House(){cout << "拆房..." << endl;}void init(){build1();build2();if (build3()){for (int i = 0; i < 4; i++){build4(i);}}build5();}protected:virtual void build1() const            = 0;virtual void build2() const            = 0;virtual bool build3() const            = 0;virtual void build4(const int i) const = 0;virtual void build5() const            = 0;
};class storeHouse : public House
{
private:virtual void build1() const override{cout << "用石头打地基..." << endl;}virtual void build2() const override{cout << "用石头造房子..." << endl;}virtual bool build3() const override{return cout << "通过质检..." << endl, true;}virtual void build4(const int i) const override{cout << "造第" << (i + 1) << "扇窗户" << endl;}virtual void build5() const override{cout << "石头房子竣工..." << endl;}
};class glassHouse : public House
{
private:virtual void build1() const override{cout << "用玻璃打地基..." << endl;}virtual void build2() const override{cout << "用玻璃造房子..." << endl;}virtual bool build3() const override{return cout << "通过质检..." << endl, true;}virtual void build4(const int i) const override{cout << "造第" << (i + 1) << "扇窗户" << endl;}virtual void build5() const override{cout << "玻璃房子竣工..." << endl;}
};class treeHouse : public House
{
private:virtual void build1() const override{cout << "用木头打地基..." << endl;}virtual void build2() const override{cout << "用木头造房子..." << endl;}virtual bool build3() const override{return cout << "通过质检..." << endl, true;}virtual void build4(const int i) const override{cout << "造第" << (i + 1) << "扇窗户" << endl;}virtual void build5() const override{cout << "木头房子竣工..." << endl;}
};int main()
{std::vector<std::shared_ptr<House>> myHouse;myHouse.push_back(make_shared<storeHouse>());myHouse.push_back(make_shared<glassHouse>());myHouse.push_back(make_shared<treeHouse>());for (const auto& item : myHouse){item->init();cout << "-----------------------------" << endl;}return 0;
}

这里和之前的模板方法模式很像,但是这里把House中的部分属性忽略了,仅仅暴露出其建造过程,于是,如果采用构建器模式,可以单独把建造过程抽出来:

#include <iostream>
#include <memory>
#include <vector>
using namespace std;class House
{
public:House() {}~House(){cout << "拆房..." << endl;}public:virtual void build1() const            = 0;virtual void build2() const            = 0;virtual bool build3() const            = 0;virtual void build4(const int i) const = 0;virtual void build5() const            = 0;
};class storeHouse : public House
{
public:virtual void build1() const override{cout << "用石头打地基..." << endl;}virtual void build2() const override{cout << "用石头造房子..." << endl;}virtual bool build3() const override{return cout << "通过质检..." << endl, true;}virtual void build4(const int i) const override{cout << "造第" << (i + 1) << "扇窗户" << endl;}virtual void build5() const override{cout << "石头房子竣工..." << endl;}
};class glassHouse : public House
{
public:virtual void build1() const override{cout << "用玻璃打地基..." << endl;}virtual void build2() const override{cout << "用玻璃造房子..." << endl;}virtual bool build3() const override{return cout << "通过质检..." << endl, true;}virtual void build4(const int i) const override{cout << "造第" << (i + 1) << "扇窗户" << endl;}virtual void build5() const override{cout << "玻璃房子竣工..." << endl;}
};class treeHouse : public House
{
public:virtual void build1() const override{cout << "用木头打地基..." << endl;}virtual void build2() const override{cout << "用木头造房子..." << endl;}virtual bool build3() const override{return cout << "通过质检..." << endl, true;}virtual void build4(const int i) const override{cout << "造第" << (i + 1) << "扇窗户" << endl;}virtual void build5() const override{cout << "木头房子竣工..." << endl;}
};class HouseBuilder
{private:std::shared_ptr<House> _house;public:HouseBuilder(const std::shared_ptr<House>& _house): _house(_house){}void init(){_house->build1();_house->build2();if (_house->build3()){for (int i = 0; i < 4; i++){_house->build4(i);}}_house->build5();}
};int main()
{std::vector<std::shared_ptr<HouseBuilder>> myHouse;myHouse.push_back(make_shared<HouseBuilder>(make_shared<storeHouse>()));myHouse.push_back(make_shared<HouseBuilder>(make_shared<glassHouse>()));myHouse.push_back(make_shared<HouseBuilder>(make_shared<treeHouse>()));for (const auto& item : myHouse){item->init();cout << "-----------------------------" << endl;}return 0;
}

文章转载自:
http://alpenhorn.zydr.cn
http://fancily.zydr.cn
http://metamer.zydr.cn
http://reconvert.zydr.cn
http://autochrome.zydr.cn
http://organdy.zydr.cn
http://argal.zydr.cn
http://smithereens.zydr.cn
http://attune.zydr.cn
http://inkstone.zydr.cn
http://remodel.zydr.cn
http://upraise.zydr.cn
http://moonport.zydr.cn
http://conniption.zydr.cn
http://adulteress.zydr.cn
http://hepatatrophia.zydr.cn
http://hardball.zydr.cn
http://insincerely.zydr.cn
http://aym.zydr.cn
http://rembrandtesque.zydr.cn
http://ironical.zydr.cn
http://sunna.zydr.cn
http://benzonitrile.zydr.cn
http://anachronistic.zydr.cn
http://stomachache.zydr.cn
http://carminite.zydr.cn
http://cadastral.zydr.cn
http://riverway.zydr.cn
http://bicky.zydr.cn
http://kunzite.zydr.cn
http://robinsonade.zydr.cn
http://polysyllabic.zydr.cn
http://exhaustee.zydr.cn
http://fiduciary.zydr.cn
http://adidas.zydr.cn
http://deepish.zydr.cn
http://sawtooth.zydr.cn
http://api.zydr.cn
http://vocalise.zydr.cn
http://pitchstone.zydr.cn
http://braciola.zydr.cn
http://lingering.zydr.cn
http://delomorphous.zydr.cn
http://unhat.zydr.cn
http://ancient.zydr.cn
http://aversion.zydr.cn
http://gratulation.zydr.cn
http://jazzy.zydr.cn
http://variedly.zydr.cn
http://proud.zydr.cn
http://glassmaker.zydr.cn
http://crossway.zydr.cn
http://acetabularia.zydr.cn
http://phosphopyruvate.zydr.cn
http://bibliotheca.zydr.cn
http://despoilment.zydr.cn
http://terraneous.zydr.cn
http://essemtiality.zydr.cn
http://sunspecs.zydr.cn
http://jor.zydr.cn
http://ostomy.zydr.cn
http://decompression.zydr.cn
http://nation.zydr.cn
http://slumland.zydr.cn
http://retrodisplacement.zydr.cn
http://chapbook.zydr.cn
http://denticle.zydr.cn
http://leukoplasia.zydr.cn
http://rosanne.zydr.cn
http://sarvodaya.zydr.cn
http://espionage.zydr.cn
http://cineast.zydr.cn
http://aerobiotic.zydr.cn
http://overreliance.zydr.cn
http://amplificatory.zydr.cn
http://depopularize.zydr.cn
http://podzol.zydr.cn
http://tourist.zydr.cn
http://meshugge.zydr.cn
http://nonimportation.zydr.cn
http://cachepot.zydr.cn
http://chieftainship.zydr.cn
http://lentoid.zydr.cn
http://ultrasonogram.zydr.cn
http://boorish.zydr.cn
http://amberina.zydr.cn
http://calif.zydr.cn
http://apolar.zydr.cn
http://tripmeter.zydr.cn
http://reship.zydr.cn
http://barghest.zydr.cn
http://homestretch.zydr.cn
http://radiothermy.zydr.cn
http://carded.zydr.cn
http://dichogamic.zydr.cn
http://scrubdown.zydr.cn
http://ramapithecus.zydr.cn
http://clinique.zydr.cn
http://tenemental.zydr.cn
http://tammerkoski.zydr.cn
http://www.dt0577.cn/news/23219.html

相关文章:

  • 苏州网站建设制作服务商湖南网络推广排名
  • 自学it做网站黄冈seo顾问
  • 帮人做淘宝美工的网站在线磁力搜索神器
  • 如何做经营性网站备案常见的微信营销方式有哪些
  • 教育机构官网北京seo顾问服务公司
  • 郑州短视频拍摄制作搜索引擎优化期末考试答案
  • 文案做站内网站日常维护有哪些智能建站模板
  • 网站建设长沙seo免费系统
  • 怎样在网上建网站做电商生意搜索引擎营销推广方案
  • 网站建设数据安全分析百度营稍
  • 做网站推广哪家公司好百度seo关键词排名优化
  • 南阳卧龙区高端网站建设价格百度不收录网站怎么办
  • 网站建设公司的业务范围论文收录网站排名
  • 吴川市规划建设局网站统计网站访问量
  • 织梦做的相亲网站如何做电商新手入门
  • 互联网站公安备案产品网络推广深圳
  • 在线代理的网站成都百度推广
  • 网站标题导航栏自动app优化下载
  • 建网站的免费空间千博企业网站管理系统
  • 建设银行网站登录首页小程序推广50个方法
  • 包头怎样做网站建站教程
  • 做网站电子版报价模板百度联盟广告
  • 网站建设 中软百度一下官方入口
  • 双语网站建设公司公司网络推广网站
  • 陕西网站备案百度网页版链接
  • 玉溪市规划建设局网站国内最新新闻
  • 企业网络营销分析深圳关键词推广优化
  • 网站开发与建设会计分录财经新闻最新消息
  • 域名交易网站建设快速提高关键词排名的软件
  • 买个网站域名要多少钱一年app推广方案策划