当前位置: 首页 > 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://wiki.neutronadmin.com/news/190613/

相关文章:

  • 集约化网站建设的函外国企业网站模板免费下载
  • 做公司网站公司如何做拦截网站
  • 学校网站群建设设计网站板块的策划方案
  • 网站飘窗怎样做沈阳建设工程信息网 找到中项网
  • 自适应网站案例idc网站模板源码下载
  • 网站建设美词原创丽水做网站
  • 网站建设流程及规范做博客用什么系统做网站好
  • 陕西 建设工程有限公司网站互联网推广加盟
  • 房地产数据网站展厅设计用什么软件
  • 网站主题方维网站后台提示验证码错误
  • 南里商濮阳网站建设wordpress 联系插件
  • 1 建设网站目的安卓原生app开发工具
  • 旅游网站建设的目标是什么怎么给网站加ico图标
  • 南阳做网站优化的公司珠海网站建设怎么样
  • 嘉兴手机网站开发费用外贸怎么做
  • wordpress更换数据库seo搜索引擎优化价格
  • 鞋子 东莞网站建设互联网广告销售好做吗
  • 网站集约化建设题目营销项目策划公司
  • win2003做网站在线app制作平台
  • 巴中建设局网站wordpress初始登录
  • 网站建设教程培训如何做二级域名子目录网站
  • c 用mysql做的网站互联网情况下做企业网站的有点
  • 南昌网站制作上海网站优化推广公司
  • 上海高端网站设计公司价格汕头网站建设维护
  • 做网站公司不给源码室内设计考研有哪些学校
  • 重庆施工员证书查询官方网站网站开发建设及推广合同
  • 网站托管套餐怎么在网页中加入图片
  • 深圳高端网站建设电话html5产品展示网站模板
  • 瑞安企业做网站垂直门户网站有哪些
  • 自己做网站赚钱吗社区门户网站模板