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

怎么做网络销售的网站讷河市铁道北建设高架桥

怎么做网络销售的网站,讷河市铁道北建设高架桥,ps做网站教程,淘特app推广代理抽象工厂模式仍然属于创建型模式#xff0c;我们在【简单工厂和工厂方法模式】这篇文章中#xff0c;描述了简单工厂和工厂方法模式#xff0c;并在文末#xff0c;简单介绍了工厂方法模式的局限性。 本文将通过汽车工厂的例子继续来阐述使用抽象工厂模式相比较于工厂方法…抽象工厂模式仍然属于创建型模式我们在【简单工厂和工厂方法模式】这篇文章中描述了简单工厂和工厂方法模式并在文末简单介绍了工厂方法模式的局限性。 本文将通过汽车工厂的例子继续来阐述使用抽象工厂模式相比较于工厂方法模式的优势。 文章目录 工厂方法模式回顾抽象工厂模式代码使用抽象工厂的局限性 工厂方法模式回顾 工厂方法模式通过允许类将实例化延迟到子类中来实现使得增加新的产品类不需要修改现有系统的代码。例如一个汽车制造商需要不同类型的汽车如宝马、奥迪等每种汽车的制造过程可能不同 #include iostream #include string #include memory using namespace std;class Car { public:Car(string name) : name_(name) { }virtual ~Car(){}virtual void show() 0; protected:string name_; };class Bmw : public Car { public:Bmw(string name) : Car(name) { }void show() { cout 获得一辆宝马汽车 name_ endl; } };class Audi : public Car { public:Audi(string name) : Car(name) { }void show() { cout 获得一辆奥迪汽车 name_ endl; } };//工厂方法 class Factory { public:virtual ~Factory() {}virtual Car* createCar(string name) 0; //工厂方法 };//宝马工厂 class BMWFactory : public Factory { public:Car* createCar(string name) { return new Bmw(name); } }; //奥迪工厂 class AudiFactory : public Factory { public:Car* createCar(string name) { return new Audi(name); } };int main () {unique_ptrFactory bmwFactory(new BMWFactory());unique_ptrFactory audiFactory(new AudiFactory());unique_ptrCar p1(bmwFactory-createCar(X6));unique_ptrCar p2(audiFactory-createCar(A8));p1-show();p2-show();return 0; }现在我们考虑这样一种情况如果我们现在要生产的产品是一组有关联的产品簇怎么办难道我们像工厂方法一样又新建立一个工厂来生产该产品吗 比如说我们之前有了奥迪工厂和宝马工厂现在我们需要生产奥迪车灯和宝马车灯难道又建立奥迪车灯工厂吗 这样的话最后我们需要管理的工厂类那也太多了所以很容易想到 我们应该对一组有关联关系的产品簇提供产品对象的统一创建。这就是抽象工厂模式。 抽象工厂模式 我们把之前的工厂方法类写成抽象工厂类并且里面提供创建车灯的方法 并且我们直接在宝马工厂和奥迪工厂去创建车灯 //系列产品一:汽车 class Car { public:Car(string name) : name_(name) { }virtual ~Car(){}virtual void show() 0; protected:string name_; }; class Bmw : public Car { public:Bmw(string name) : Car(name) { }void show() { cout 获得一辆宝马汽车 name_ endl; } }; class Audi : public Car { public:Audi(string name) : Car(name) { }void show() { cout 获得一辆奥迪汽车 name_ endl; } }; //系列产品二车灯 class Light { public:virtual ~Light() {}virtual void show() 0; }; class BmwLight : public Light{ public:void show() { cout BMW light! endl;}; }; class AudiLight : public Light{ public:void show() { cout Audi light! endl;}; };//工厂方法 》 抽象工厂对一组有关联关系的产品簇提供产品对象的统一创建 class AbstractFactory { public:virtual ~AbstractFactory() {}virtual Car* createCar(string name) 0; //工厂方法 创建汽车virtual Light* createLight() 0; // 工厂方法 创建汽车关联的产品--车灯 };//宝马工厂 class BMWFactory : public AbstractFactory { public:Car* createCar(string name) { return new Bmw(name); }Light* createLight() {return new BmwLight();} }; //奥迪工厂 class AudiFactory : public AbstractFactory { public:Car* createCar(string name) { return new Audi(name); }Light* createLight() {return new AudiLight();} };代码使用 int main () {unique_ptrAbstractFactory bmwFactory(new BMWFactory());unique_ptrAbstractFactory audiFactory(new AudiFactory());unique_ptrCar p1(bmwFactory-createCar(X6));unique_ptrCar p2(audiFactory-createCar(A8));unique_ptrLight l1(bmwFactory-createCarLight());unique_ptrLight l2(audiFactory-createCarLight());p1-show();l1-show();p2-show();l2-show();return 0; }抽象工厂的局限性 我们设想这样一种场景比如说我们的宝马工厂需要创建一个新的类对象产品但是奥迪工厂并不需要但是如果宝马工厂想要创建该类 我们也比赛在抽象工厂类中去定义这样一个虚函数尽管奥迪工厂并不需要创建该类对象他还是不得不去重写该虚函数。这样是不符合逻辑的。 总结 简单工厂Simple Factory: 优点把对象的创建封装在一个接口函数里面通过传入不同的标识返回创建的对象用户不用自己负责new对象不用了解对象创建的详细过程 缺点提供创建对象实例的接口函数不闭合不能对修改关闭 工厂方法Factory Method 优点Fatcory基类提供了一个纯虚函数创建产品定义派生类具体产品的工厂负责创建对应的产品可以做到不同的产品在不同的工厂里面创建能够对现有工厂以及产品的修改关闭 缺点实际上很多产品是有管理关系的属于一个产品簇不应该放在不同的工厂里面去创建这样一是不符合实际的产品对象创建逻辑二是工厂类太多了不好维护 抽象工厂Abstract Factory 优点把有关联关系的属于一个产品簇的所有产品创建的接口函数放在一个抽象工厂里面AbstractFactory类派生类具体产品的工厂应该负责创建该产品簇里面所有的产品。
http://www.tj-hxxt.cn/news/143527.html

相关文章:

  • 安装wordpress主题放哪里网站优化吧
  • 汽车专业网站wordpress怎么写php
  • wordpress游戏站网站文字模板
  • 青岛seo建站北京注册公司麻烦吗
  • 南京哪家网站做的好asp网站 换模板
  • 档案信息网站建设的意义如何免费创建企业网站
  • 上传网站程序后又怎么做网站建设金
  • 贵阳经开区建设管理局网站南京网站设计建设
  • 做网站路径手机模板网站下载
  • 做网站后端的全部步骤asp代码如何修改asp网站网页域名名称
  • 网站开发工具评价视频网站用户增长怎么做
  • 企业网站改版的好处怎么做网站设
  • 大型企业的微网站谁做wordpress 右侧边栏
  • 网站维护简单吗公司地址变更
  • 台州市城市建设投资公司网站本溪网站建设
  • 空间网网站seo优化培训
  • 致力于邯郸网站建设制作服务_使众多客户将网站转化为网络市场营销.中国建设工程造价管理协会网站简称
  • 信阳企业网站建设建站快车来电
  • 手机上网网站建设建筑导航网站
  • 搜网站首页不见了seo安卓开发软件手机版
  • 服装网站模板山西网站设计
  • 海外社交网站开发在与客户谈网页广告时如何让客户相信网站流量
  • 北京pc端网站开发什邡建设局网站
  • 站点推广策略包括怎样建设购物网站
  • 做php网站教程视频wordpress图片水印
  • 我要发布文章到网站上推广 哪些网站最好网站建设和源代码问题
  • 上海网站建设改版做钢材的做什么网站效果好
  • 百度营销登录邢台视频优化
  • 想做个网站 怎么做的co域名哪些网站
  • 建电商网站要多少钱网页加速器安卓