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

网站做相片wordpress与phpmyadmin

网站做相片,wordpress与phpmyadmin,做书评的网站,wordpress页面加载慢1、定义与动机 定义#xff1a;将一个复杂对象的构建与其表示相分离#xff0c;使得同样的构建过程#xff08;稳定#xff09;可以创建不同的表示#xff08;变化#xff09; 动机#xff1a; 在软件系统中#xff0c;有时候面临着“一个复杂对象”的创建工作#x…1、定义与动机 定义将一个复杂对象的构建与其表示相分离使得同样的构建过程稳定可以创建不同的表示变化 动机 在软件系统中有时候面临着“一个复杂对象”的创建工作其通常由各个部分的子对象用一定的算法构建而成由于需求的变化这个复杂对象的各个部分经常面临着剧烈的变化但是将它们组合在一起的算法却相对稳定如何应对这种变化如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化从而保持系统中的“稳定构建算法”不随着需求改变而改变 个人理解构建器模式严格来说是在Template Method方法的基础上进行拆分将表示和构建过程相分离拆成一个更加复杂但耦合度更低的代码。 2、案例分析 假设需要构建一栋房子需要墙、窗户、房顶、地板等需求但是所需要的房子是木头还是石头还是其他材料的房子并不清楚可以很容易的使用Template Method模式写出一个伪代码解决依赖倒置问题即可。 2.1、模板方法一 class House{ public:void Init(){// 构建墙this-BuilderWall();// 构建四个窗户for(int i 0;i 4;i){this-BuilderWindows();}// 是否需要铺地板if(this-BuilderFlag()){this-BuilderFloor();}// 构建房顶this-BuilderRoof();}virtual ~House(){} protected:virtual void BuilderWall() 0;virtual void BuilderWindows() 0;virtual bool BuilderFlag() 0;virtual void BuilderFloor() 0;virtual void BuilderRoof() 0; };class StoneHouse: public House{ public:virtual ~StoneHouse(){} protected:virtual void BuilderWall(){}virtual void BuilderWindows(){}virtual bool BuilderFlag(){return true;}virtual void BuilderFloor(){}virtual void BuilderRoof(){} };int main() {House *house new StoneHouse();house-Init(); }其实这个代码写到这里已经可以了可以不继续优化也不需要使用构建器模式。 2.2、构建器模式 一个类的功能不能太复杂太过于庞大当类的行为代码太多时可以考虑重构将对象的表示和构建过程分离提取多个单独的类具体思路 House和HouseBuilder基类分别是一个东西的表示和构建过程对于House基类可以有多种多样的HouseStoneHouse、WoodHouse、CrystalHouse…对于HouseBuilder基类为每种房子的构建提供具体的Builder构建器其应该组合一个House基类由于构建房子的一个基本流程算法骨架是大致相同相对稳定的因此可以将这个大致流程算法骨架单独提取出一个类通过多态的性质传入不同的XXXHouseBuilder构建器进行构建不同的房子。 class House{ protected:Wall wall;Window window; public:virtual ~House(){}// ... };class StoneHouse: public House{ public:virtual ~StoneHouse(){} };class HouseBuilder{ public:House* GetResult(){return house;}virtual ~HouseBuilder(){} protected:House *house;virtual void BuilderWall() 0;virtual void BuilderWindows() 0;virtual bool BuilderFlag() 0;virtual void BuilderFloor() 0;virtual void BuilderRoof() 0; };class StoneHouseBuilder: public HouseBuilder{ protected:virtual void BuilderWall(){ // house-wall;...}virtual void BuilderWindows(){ // house-window;...}virtual bool BuilderFlag(){}virtual void BuilderFloor(){}virtual void BuilderRoof(){} };class HouseDirector{ public:HouseBuilder* houseBuilder;HouseDirector(HouseBuilder* _houseBuilder): houseBuilder(_houseBuilder){}House *Construct(){// 构建墙houseBuilder-BuilderWall();// 构建四个窗户for(int i 0;i 4;i){houseBuilder-BuilderWindows();}// 是否需要铺地板if(houseBuilder-BuilderFlag()){houseBuilder-BuilderFloor();}// 构建房顶houseBuilder-BuilderRoof();return houseBuilder-GetResult();} };3、总结 Builder模式主要用于“分步构建一个复杂的对象”。在这其中“分步骤”是一个稳定的算法而复杂对象的各个部分则经常变化。变化点在哪里封装哪里——Builder模式主要在于应对“复杂对象各个部分”的频繁需求变动。其缺点在于难以应对“分步骤构建算法”的需求变动。稳定点就是缺点Builder模式中需要注意不同语言中构造器内部调用虚函数的差别C vs Java C中无法再父类的构造方法中调用子类的虚函数动态绑定因为子类在此时还没有构造出来此时如果在构造方法中调用虚函数那么将会是静态绑定意味着调用父类自己的虚函数。而Java等语言不是
http://www.hkea.cn/news/14314164/

相关文章:

  • 嘉兴网站排名优化报wordpress怎样上传
  • 研发地网站建设动漫做a视频网站有哪些
  • 家居企业网站建设策划定制公众号需要多少钱
  • 瀑布流网站源码下载郑州商务网站建设
  • 网站推广策划书的特点有哪些与网站建设关系密切的知识点
  • 天门网站建设Wordpress变装
  • 怎么做消费信贷网站动漫制作专业正规吗
  • 杭州网站程序开发公司在线广告设计与制作
  • 免费网站制造怎样搭建网站
  • 临汾万词霸屏网站建设免费咨询wordpress 投票功能
  • 谷歌seo网站推广怎么做优化学生做的网站成品
  • 做h5免费的网站有天元建设集团有限公司2021年产值
  • 网站排名与什么有关系用凡科做网站好吗
  • 百度站长平台登录搜索引擎推广的优势
  • 郑州企业网站如何建设网站开发后期要解决的问题
  • 社交网站制作怎样提高网站的权重
  • 找建筑类工作哪个网站好电销系统多少钱一套
  • 商城网站项目策划书二级网站建设要求
  • 长春网站建设索q479185700免费咨询律师电话12345
  • 网站的用户体验主要有那些类型discuz建站教程
  • seo软件安卓版张家港网站设计优化
  • 长沙市制作网站模板网站 优帮云
  • seo批量建站方法建网站买什么主机
  • 代表网站开发的logo网站建设合同报价
  • 天猫网站什么时候建设网站导航字体
  • 网站建设的收获公司简介模板怎么做
  • 重庆网站的建设成都网站设计公
  • 网站项目开发流程有哪七步脱贫地区农副产品网络销售平台
  • 网站建设期间怎么关闭网站给公司创建网站
  • 南京百度seo公司梧州网站优化价格