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

网站优化都是怎么做的2019网站seo

网站优化都是怎么做的,2019网站seo,免费网站建站平台,网站排名优化推广厦门设计模式 创建者模式 前言原来代码使用设计模式总结Builder模式在源码中的应用#xff1a;其他代码 前言 “对象创建”模式——绕开new 工厂模式 抽象工厂 原型模式 构建器 动机与背景 目前需要建造一个房子#xff0c;建造房子需要一系列特定的步骤#xff0c;但是房子的类… 设计模式 创建者模式 前言原来代码使用设计模式总结Builder模式在源码中的应用其他代码 前言 “对象创建”模式——绕开new 工厂模式 抽象工厂 原型模式 构建器 动机与背景 目前需要建造一个房子建造房子需要一系列特定的步骤但是房子的类型也有很多不同类型的房子对应的建造步骤也不尽相同。 用于分步骤构建对象 没有使用设计模式的代码 // 可以参照模板方法 存在的问题 个人感觉与模板方式很相似所以上面的代码使用了模板方法的代码 解决方法 使用构建器将复杂多变的对象的构建过程抽象出来 使用设计模式的代码 原来代码 Builder 模式主要用于“分步骤构建一个复杂的对象”。 在这其中“分步骤”是一个稳定的算法而复杂对象的各个部分则经常变化。 变化点在哪里封装哪里—— Builder模式主要在于应对“复杂对象各个部分”的频繁需求变动。 其缺点在于难以应对“分步骤构建算法”的需求变动。在Builder模式中要注意不同语言中构造器内调用虚函数的差别C vs. C#) 。 //原来的代码 class House{protected:void init(){ //1.构建的流程是稳定的this - BuildPart1(); // 打地基for(int i 0 ; i 4 ; i ){this - BuildPart2();}bool flag this - BuildPart3();if(flag){this - BuildPart4(); }this - BuildPart5(); }virtual ~House(){}//代表建房子的门 窗户 等 2.构建的方法是变化的纯虚函数virtual void BuildPart1() 0;virtual void BuildPart2() 0;virtual void BuildPart3() 0;virtual void BuildPart4() 0;virtual void BuildPart5() 0;}在这里有个问题是能不能把init函数名替换成构造函数不能C构造函数是静态绑定 class StoneHosepublic House{protected: //实例化virtual void BuildPart1(){...............}virtual void BuildPart2(){...............}virtual void BuildPart3(){...............}virtual void BuildPart4(){...............}virtual void BuildPart5(){...............} }到这里已经完成了使用 int main() {//就是父类指针指向子类对象House * pHouse new StoneHose();pHouse -Init();}使用设计模式 //把上面的代码用设计模式 //如果对象比较复杂可以做如下拆分把House分成两个一个是定义方法可变的叫做HouseBuilder ,一个定义流程、逻辑的是把init放进去 class House{//........void Part1();void Part2();void Part3();}class HouseBuilder{public:House *GetResult() {return pHouse;} virtual ~HouseBuilder(){}protected://代表建房子的门 窗户 等 2.构建的方法是变化的纯虚函数virtual void BuildPart1() 0;virtual void BuildPart2() 0;virtual void BuildPart3() 0;virtual void BuildPart4() 0;virtual void BuildPart5() 0;};//塞一个 HouseBulider指针,把 this 换成pHouseBuilder class HouseDirector{public:HouseBulider *pHouseBuilder;//另外要加入构造函数HouseDirector(HouseBulider *pH){ //新加入this - pHouseBuilder pH;}HouseBulider Construct(){//void init() 构建过程,不是虚函数pHouseBuilder - BuildPart1(); // 打地基for(int i 0 ; i 4 ; i ){pHouseBuilder - BuildPart2();//把init()中的 this 换成pHouseBuilder}bool flag pHouseBuilder - BuildPart3();if(flag){pHouseBuilder - BuildPart4(); }pHouseBuilder - BuildPart5(); return pHouseBuilder-GetResult();} }//那么石头房子呢 StoneHosepublic House 感觉这里是不需要呀 看这个https://zhuanlan.zhihu.com/p/665141864 class StoneHosepublic House{ //对象的表示}class StoneHoseBuilderpublic HouseBuilder{ // 实现protected: virtual void BuildPart1(){...............}virtual void BuildPart2(){...............}virtual void BuildPart3(){...............}virtual void BuildPart4(){...............}virtual void BuildPart5(){...............} }void main() {StoneHouseBuilder *pStoneHouseBuilder new StoneHouseBuilder;HouseDirector *pHouseDirector new HouseDirector(HouseBuilder *pStoneHouseBuilder);pHouseDirector-Construct();// 操作 }构建过程太复杂抽象出来单独变成类 把对象的表示和构建相分离House 和 HouseBuilder是的同样的构建(稳定)过程Construct可以构建不同的表示变化 上面只是一个演化模式 总结 总结一下就是把一个有构建步骤的对象拆分分成表示和实现方法过程实现过程稳定不抽象表示部分可以抽象用虚函数实现 class A{//需要创建的事物、对象这里定义A的组成 set_Part1(); } class B_builer (方法接口){ //A的组成实现接口要有能返回A的接口 //1.要拥有A指针成员 A *m_a //2.要拥有构造函数传入A实现多态 B_builer(A a){this-m_a a;} //3.要有返回A 的方法接口 A GetComputer() //4.要定义建造A需要的方法接口buildPart1 2 3 4 … A *m_a B_builer(A *a){this-m_a a;} virtual buildPart1() 0; virtual A* GetComputer() 0; // 要有返回A 的方法接口} class B_concrete_builer (方法实现)public B_builer{ virtual buildPart1(){ this - A-setPart1();} //具体实现 virtual A* GetComputer(){return tbis-A ;}; // 具体实现 要有返回A 的方法接口 } class C_Process 稳定的构建过程 { //1.要拥有建造材料的方法接口的指针成员 B_builer *m_b_builer B_builer *m_b_builer //2.要拥有构造函数传入B_builer实现多态 C_Process(B_builer *b_builer){this-m_b_builer b_builer;} //2稳定的构建过程代码建造逻辑 要返回A A *func(){ step 1 2 3 … return m_b_builer-GetResult(); } } 使用过程 B_concrete_builer *B new B_concrete_builer(); C_Process *C new C_Process(B); C-func() A B-GetComputer(); Builder模式在源码中的应用 StringBuilder 其实我们熟知的StringBuilder就是builder模式的典型实现。我们平时使用基本都是这样 1 StringBuilder sb new StringBuilder(); 2 sb.append(123).append(‘a’) 3 .append(1.23) 4 .append(true) 5 .append(“hhhh”); https://zhuanlan.zhihu.com/p/113971558 其他代码 这个很好 https://zhuanlan.zhihu.com/p/665141864 //下面是源码 #include iostream using namespace std;#include string//需要的产品笔记本电脑 class Computer { public:void SetCPU(const string cpu) {this-cpu cpu;}void SetDisk(const string disk) {this-disk disk;}void SetMemory(const string memory) {this-memory memory;}void SetScreen(const string screen) {this-screen screen;}void ShowInfo() {cout 基本信息 endl;cout this-cpu endl;cout this-memory endl;cout this-disk endl;cout this-screen endl;cout endl;}private:string cpu; //CPUstring disk; //磁盘string memory; //内存string screen; //显示屏 };//抽象的建造者抽象建造单位 class Builder { public:virtual void BuilderCpu() 0; //建造CPUvirtual void BuilderMemory() 0; //建造内存virtual void BuilderDisk() 0; //建造磁盘virtual void BuilderScreen() 0; //建造显示屏virtual Computer* GetComputer() 0; //出厂建造好的笔记本 };//具体的建造者具体施工单位、具体的建造方式 class DellBuilder : public Builder //dell笔记本 { private:Computer* computer; public:DellBuilder() {this-computer new Computer(); }void BuilderCpu() {this-computer-SetCPU(DELL CPU);}void BuilderMemory() {this-computer-SetMemory(DELL 内存);}void BuilderDisk() {this-computer-SetDisk(Dell 磁盘);}void BuilderScreen() {this-computer-SetScreen(DELL 显示屏);}Computer* GetComputer(){return this-computer;}};//具体的建造者具体施工单位、具体的建造方式 class AppleBuilder : public Builder //dell笔记本 {private:Computer* computer; public:AppleBuilder() {this-computer new Computer(); }void BuilderCpu() {this-computer-SetCPU(Apple CPU);}void BuilderMemory() {this-computer-SetMemory(Apple 内存);}void BuilderDisk() {this-computer-SetDisk(Apple 磁盘);}void BuilderScreen() {this-computer-SetScreen(Apple 显示屏);}Computer* GetComputer(){return this-computer;}};//指导者指挥具体的建造逻辑 class Director { public:Director(Builder* builder) {this-builder builder;}//建造逻辑void BuilderComputer() {//1.建造CPUthis-builder-BuilderCpu();cout first make cpu endl;//2.建造内存条this-builder-BuilderMemory();cout second make memory endl;//3.建造磁盘this-builder-BuilderDisk();cout third make disk endl;//4.建造显示屏this-builder-BuilderScreen();cout finally, make screen endl;}private:Builder* builder; };//客户端 int main() {Computer* computer NULL;Builder* builder NULL;Director* director NULL;//需求要一台dell笔记本builder new DellBuilder(); // 先找一个dell制造厂负责具体的创建director new Director(builder); //指导者指导Dell制造厂如何创建director-BuilderComputer(); //开始创建了。。。computer builder-GetComputer(); // 待建造完毕制造厂出货computer-ShowInfo(); //产品质检合格delete computer;delete director;delete builder;//制造Aplle比较笔记本同理可得。return 0; }
http://www.dnsts.com.cn/news/91388.html

相关文章:

  • 做app还要做网站么在线logo设计商标免费
  • html网页设计网站开发报告国内优秀包装设计作品赏析
  • 玄圭做网站怎么样深圳高端做网站
  • 电子商务网站建设与管理试题怎么免费制作网站
  • 网站建设企业熊掌号国际热点事件
  • 网络推广工作内容怎么写外贸网站优化价格
  • 做网站的文案是指昆山网站建设苦瓜
  • 招工网站58同城网站建设管理调研提纲
  • 海林建设局网站瑞安做微网站
  • 安泽网站建设如何做一个漂亮的网页
  • 做慧聪网价格网站价格网站是什么时候开始的
  • 营销型网站建设和规划如何登陆建设银行信用卡网站
  • e龙岩网站华为wordpress
  • 新塘网站建设视频怎么添加wordpress
  • 容城县网站开发学seo
  • 自己做网站网页文件在哪里南京环力建设有限公司网站
  • 学网站开发与维护有用吗html网页设计代码例子
  • 南京响应式网站建设云南有哪些城市
  • 网站建设一般报价上线了小程序制作平台
  • 婚纱网站论文河南如何优化网站
  • 网站开发维护求职信数字营销的优势有哪些
  • 佛山网站建设定制开发制定 网站改版优化方案
  • 做网站客户没有付定金柯桥建设集团网站
  • 从什么网站找做游戏的代码wordpress 应用
  • 北京建站公司哪家好办公室装修方案
  • 做网站绘制蓝图的步骤怎样防止别人利用自己的电脑做网站服务器
  • 鸿扬家装网站建设做个公司网站要多少钱
  • 网站开发需要学些什么?搜索引擎搜索器
  • 中山市区做网站公司企业网站制作的书
  • 三明住房和城乡建设部网站上林住房和城乡建设网站