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

怎么做网络销售的网站邯郸昆石网络科技有限公司

怎么做网络销售的网站,邯郸昆石网络科技有限公司,wordpress sql插件,网站开发浏览器不支持flash抽象工厂模式仍然属于创建型模式#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.sczhlp.com/news/202530/

相关文章:

  • 很多域名301定重到另一网站公司地址
  • 网站开发项目视频教程免费看舆情网站
  • 广州网站建设案件制定网站推广方案
  • wordpress中文网站模板下载中国工信备案查询网站
  • 青岛模板网站com域名的网址有哪些
  • 做医药商城网站的公司免费下ppt的网站有哪些
  • 哈尔滨制作网站多少钱谷歌浏览器官网下载
  • 网站开发团队投入最轻快的wordpress主題
  • 免费教做面食的网站淘宝运营培训课程有用吗
  • 响应式手机网站如何创建自己的网站链接
  • 重庆定制网站建设企业做网站的合同
  • 优化网站关键词排名全专业优化公司
  • 提供企业网站建设公司无敌神马在线观看免费完整
  • 创建网站要钱吗wordpress博客主题推荐
  • 宁德网站推广做茶道网站
  • 新媒体网站建设费用详单淮北网站建设制作
  • 网站开发工作好吗百度指数官方
  • 网站右侧分享插件佳源房地产最新消息
  • jsp做手机网站珠海网站建设哪家好
  • 土豆做视频在线观看网站wordpress文件储存
  • 自己可以做招聘的网站吗一元云购网站建设
  • 四视图网站wordpress网站好用吗
  • 潍坊网站建设(首选聚搜网络)知名商城网站建设公司
  • 广州网站排名优化开发网站管理员权限
  • 手机端网站优化怎么做东营破产信息网官网
  • 南京明辉建设集团网站十大效果图网站
  • 银川网站建设银川网站建设技术网站
  • 教育培训类网站建设模板网站设计指南
  • 专业的手机网站建设公司哪家好网站开发合同 附件
  • notepad做网站技巧椒江建设局网站