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

英文都不懂 学网站建设维护难吗中国机械加工网18易5下2拉i

英文都不懂 学网站建设维护难吗,中国机械加工网18易5下2拉i,百度联盟广告,淄博建企业网站设计模式最大的作用就是在变化和稳定中间寻找隔离点#xff0c;然后分离它们#xff0c;从而管理变化。将变化像小兔子一样关到笼子里#xff0c;让它在笼子里随便跳#xff0c;而不至于跳出来把你整个房间给污染掉。 设计思想 ​ 将一个复杂对象的构建与其表示相分离然后分离它们从而管理变化。将变化像小兔子一样关到笼子里让它在笼子里随便跳而不至于跳出来把你整个房间给污染掉。 设计思想 ​ 将一个复杂对象的构建与其表示相分离使得同样的构建过程稳定可以创建不同的表示变化 动机 在软件系统中有时候面临着“一个复杂对象” 的创建工作其通常由各个部分的子对象用一定的算法构成由于需求的变化这个复杂对象的各个部分经常面临着剧烈的变化但是将它们组合在一起的算法却相对稳定 如何应对这种变化如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化从而保证系统中的“稳定构建算法”不随着需求改变而改变 结构 要点总结 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::vectorstd::shared_ptrHouse myHouse;myHouse.push_back(make_sharedstoreHouse());myHouse.push_back(make_sharedglassHouse());myHouse.push_back(make_sharedtreeHouse());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_ptrHouse _house;public:HouseBuilder(const std::shared_ptrHouse _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::vectorstd::shared_ptrHouseBuilder myHouse;myHouse.push_back(make_sharedHouseBuilder(make_sharedstoreHouse()));myHouse.push_back(make_sharedHouseBuilder(make_sharedglassHouse()));myHouse.push_back(make_sharedHouseBuilder(make_sharedtreeHouse()));for (const auto item : myHouse){item-init();cout ----------------------------- endl;}return 0; }
http://www.yutouwan.com/news/190613/

相关文章:

  • 1280的界面网站做多宽网站开发地图导航页面
  • 如何学好网站开发南宁做网站科技公司
  • 太原网站定制电子商务系统分析报告
  • 文化传播公司网站模版浙江交工宏途交通建设有限公司网站
  • 可以做公众号背景图的网站网站建设公司 技术评估
  • asp 大型网站开发企业网站注销流程
  • 公司网站域名查询通化市建设工程招投标网站
  • 上饶招聘网站建设公司百度网盘官网登陆入口
  • 网站推广软件下载安装免费全国企业信息公示官网
  • 网站建设 运维 管理包括大型门户网站模板
  • 做群头像的网站在线做网站之前要先购买服务器吗
  • 重庆茶叶网站建设做网站的上海市哪家技术好
  • 网站制作老了ppt免费模板下载网站有哪些
  • 建站软件排行榜app广告联盟
  • 自己建一个外贸网站应用商店下载app软件
  • 兰溪市建设局官方网站优化搜索点击次数的方法
  • 找人开发一个网站多少钱wordpress 订阅插件
  • 京鑫建设集团网站怎么用网吧电脑做网站服务器吗
  • 怎么做html5网站吗网页设计大赛策划书
  • 做外贸网站 怎么收钱做婚庆网站的功能定位
  • 网站模板炫酷淘宝运营工作内容
  • 顺德医疗网站建设专业的外贸行业网站制作
  • 网站建设收税网站备案类型有哪些
  • 正规网站建设团队是什么wordpress 系统环境
  • 建站仅向商家提供技术服务wordpress缩略图地址
  • 做58同城这样的网站有哪些如何美化wordpress页面
  • 奖励软件下载网站站长网站的优势
  • 丽水公司做网站网站后台密码忘记了
  • 谭谭心怎么建设网站wordpress 代码解读
  • 网站后台如何登陆盐山网站建设