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

北京网站建设兴田德润电话多少wordpress 目录书

北京网站建设兴田德润电话多少,wordpress 目录书,长沙网站设计公司排名,网站宣传与推广目录 简单工厂工厂方法模式 简单工厂 定义#xff1a;简单工厂由一个工厂根据参数类型决定创建哪种产品的实例。 简单工厂不包含在23种设计模式之内#xff08;简单工厂不满足开闭原则#xff0c;后面会详细讲#xff09; 举例#xff1a;张三去4S店买了车#xff0c;显… 目录 简单工厂工厂方法模式 简单工厂 定义简单工厂由一个工厂根据参数类型决定创建哪种产品的实例。 简单工厂不包含在23种设计模式之内简单工厂不满足开闭原则后面会详细讲 举例张三去4S店买了车显而易见车不是张三造出来的车是工厂造出来的张三获得了该车并能够使用该车但是造车的细节张三不用知道。 铁蛋在一家汽车工厂上班这家工厂承接了”小米汽车“和”华为汽车“的生产一天铁蛋接到了要求要新开一个”长安汽车“生产线生产长安汽车铁蛋要怎么做呢 先写一个简单工厂的例子再看看铁蛋要怎么做? 简单工厂模式有三个角色抽象基类Car                                             实现类XiaoMiCar、HuaWeiCar                                             简单工厂类SimpleFactory #include iostream #include string using namespace std;//抽象基类 class Car { public:Car(string name) : name_(name) {}virtual void Show() 0;protected:string name_; };//实现类 class XiaomiCar : public Car { public:XiaomiCar(string name) : Car(name) {}void Show() {cout 获得一辆小米轿车: name_ endl;} }; //实现类 class HuaweiCar : public Car { public:HuaweiCar(string name) : Car(name) {}void Show() {cout 获得一辆华为轿车: name_ endl;} };enum CarType {XIAOMI, HUAWEI };//简单工厂类 class SimpleFactory { public:Car* CreateCar(CarType type) {switch (type) {case XIAOMI:return new XiaomiCar(SU7);case HUAWEI:return new HuaweiCar(问界);default:return nullptr;}} };int main() {SimpleFactory* factory new SimpleFactory();Car* c1 factory-CreateCar(XIAOMI);Car* c2 factory-CreateCar(HUAWEI);c1-Show();c2-Show();delete c1;delete c2;delete factory; }运行结果 上面小米汽车XiaomiCar 和华为汽车HuaweiCar 继承了汽车基类Car。 简单工厂SimpleFactory根据传入不同类型CarType来生产不同类型的车。 你是否想到了铁蛋要怎么做铁蛋是这样做的 1.增加长安汽车类继承了汽车基类Car 2.修改简单工厂类SimpleFactory增加”CHANGAN“类型车的创建 #include iostream #include string using namespace std;class Car { public:Car(string name) : name_(name) {}virtual void Show() 0;protected:string name_; };class XiaomiCar : public Car { public:XiaomiCar(string name) : Car(name) {}void Show() {cout 获得一辆小米轿车: name_ endl;} };class HuaweiCar : public Car { public:HuaweiCar(string name) : Car(name) {}void Show() {cout 获得一辆华为轿车: name_ endl;} };class ChanganCar : public Car { public:ChanganCar(string name) : Car(name) {}void Show() {cout 获得一辆长安轿车: name_ endl;} };enum CarType {XIAOMI, HUAWEI, CHANGAN };class SimpleFactory { public:Car* CreateCar(CarType type) {switch (type) {case XIAOMI:return new XiaomiCar(SU7);case HUAWEI:return new HuaweiCar(问界);case CHANGAN:return new ChanganCar(深蓝《偷偷藏不住》);default:return nullptr;}} };int main() {cout ------简单工厂------ endl;SimpleFactory* factory new SimpleFactory();Car* c1 factory-CreateCar(XIAOMI);Car* c2 factory-CreateCar(HUAWEI);Car* c3 factory-CreateCar(CHANGAN);c1-Show();c2-Show();c3-Show();delete c1;delete c2;delete c3;delete factory; }运行结果 成功生产了长安轿车 但是从逻辑上来讲同一个工厂不会生产小米汽车又生产华为汽车又或者这个工厂还将生产长安汽车 因为当简单工厂想增加生产长安汽车时会修改简单工厂类SimpleFactory增加”CHANGAN“类型车的创建违反了开闭原则对修改关闭对扩展开放。每当我们增加一种产品的时候就要去修改工厂方法这样会破坏其内聚性给维护带来额外开支。 所以有了工厂方法模式来解决该问题。 工厂方法模式 定义工厂基类负责定义创建对象的公共接口子类工厂负责创建出具体的对象来实现不同产品的工厂化创建。 设计模式有三大分类创建型模式、结构型模式、行为型模式 工厂方法模式属于创建型模式 工厂方法模式不只有一个工厂每个工厂只生产一种特定的产品。这样做的好处是当以后需要增加新的产品时直接新增加一个对应的工厂就可以而不是去修改原有的工厂符合编程原则的开闭原则。 #include iostream #include string using namespace std;class Car { public:Car(string name) : name_(name) {}virtual void Show() 0;protected:string name_; };class XiaomiCar : public Car { public:XiaomiCar(string name) : Car(name) {}void Show() {cout 获得一辆小米轿车: name_ endl;} };class HuaweiCar : public Car { public:HuaweiCar(string name) : Car(name) {}void Show() {cout 获得一辆华为轿车: name_ endl;} };class Factory { public:virtual Car* CreateCar(string name) 0; };class XiaomiFactory : public Factory { public:Car* CreateCar(string name){return new XiaomiCar(name);} };class HuaweiFactory : public Factory { public:Car* CreateCar(string name){return new HuaweiCar(name);} };int main() {cout ------工厂方法模式------ endl;Factory* xiaomiFactory new XiaomiFactory();Factory* huaweiFactory new HuaweiFactory();Car* xiaomiCar xiaomiFactory-CreateCar(SU7);Car* huaweiCar huaweiFactory-CreateCar(问界);xiaomiCar-Show();huaweiCar-Show();delete xiaomiCar;delete huaweiCar;delete xiaomiFactory;delete huaweiFactory; }运行结果 同样上面小米汽车XiaomiCar 和华为汽车HuaweiCar 继承了汽车基类Car。 小米工厂XiaomiFactory和华为工厂HuaweiFactory继承了工厂基类Factory。 小米工厂生产小米汽车华为工厂生产华为汽车。 这样铁蛋想生产”长安汽车“就直接新建长安汽车工厂由长安工厂来生产长安汽车这样就不用修改小米工厂和华为工厂满足程序设计的开闭原则。 铁蛋是这样做的 1.增加了长安汽车类ChanganCar 继承了汽车基类Car 2.增加了长安汽车工厂ChanganFactory 继承了工厂基类Factory #include iostream #include string using namespace std;class Car { public:Car(string name) : name_(name) {}virtual void Show() 0;protected:string name_; };class XiaomiCar : public Car { public:XiaomiCar(string name) : Car(name) {}void Show() {cout 获得一辆小米轿车: name_ endl;} };class HuaweiCar : public Car { public:HuaweiCar(string name) : Car(name) {}void Show() {cout 获得一辆华为轿车: name_ endl;} };class Factory { public:virtual Car* CreateCar(string name) 0; };class XiaomiFactory : public Factory { public:Car* CreateCar(string name){return new XiaomiCar(name);} };class HuaweiFactory : public Factory { public:Car* CreateCar(string name){return new HuaweiCar(name);} };class ChanganCar : public Car { public:ChanganCar(string name) : Car(name) {}void Show() {cout 获得一辆长安轿车: name_ endl;} };class ChanganFactory : public Factory { public:Car* CreateCar(string name){return new ChanganCar(name);} };int main() {cout ------工厂方法模式------ endl;Factory* xiaomiFactory new XiaomiFactory();Factory* huaweiFactory new HuaweiFactory();Factory* changanFactory new ChanganFactory();Car* xiaomiCar xiaomiFactory-CreateCar(SU7);Car* huaweiCar huaweiFactory-CreateCar(问界);Car* changanCar changanFactory-CreateCar(深蓝《偷偷藏不住》);xiaomiCar-Show();huaweiCar-Show();changanCar-Show();delete xiaomiCar;delete huaweiCar;delete changanCar;delete xiaomiFactory;delete huaweiFactory;delete changanFactory; }运行结果 无广告以汽车为例故事形式介绍了简单工厂和工厂方法模式。 谢谢观看祝顺利
http://www.zqtcl.cn/news/312635/

相关文章:

  • 南通网站优化找哪家推荐做素菜的网站
  • 中国十大网站域名界面设计最好的网站
  • 苍山做网站北京便宜网站建设
  • 广州公司网站制作招聘信息汕头网站推广哪家好
  • 登录建设官方网站品牌营销专家
  • 天津模板建站哪家好wordpress标题换行显示不全
  • 杭州房地产网站建设网站建设开发公司推荐指数
  • 建设部网站上怎样查询企业业绩做淘宝联盟网站要多少钱
  • 宣武上海网站建设网站导购话术
  • 天津北京网站建设公司大网站建设公司
  • 网站需要在哪些方面备案百度云建网站
  • 西安手机网站定制网站建设西安网站注册
  • 怎么做秒赞网站企业自己建设的营销网络
  • 一般网站建设需求有哪些wordpress脚注更改
  • 海报设计在线生成免费网站排名优化方案
  • 网站开发综合设计报告怎么制作浏览器网页
  • 做网站打广告青岛网站营销推广
  • 网站建设中首页模板本科 网站建设的基础教程
  • 推广网站优化seo教程上排名抖音营销
  • 创业园区网站建设wordpress对接公众号源码
  • 怎么设计公司的网站长沙seo结算
  • 参加网站建设项目人员保障体系镇江网站建设门户报价
  • 漯河网站优化景区网站建设方案
  • 辽宁智能网站建设价位wordpress 公司主题
  • zencart 网站入侵冲电气软件 网站建设
  • 在网上做黑彩网站会怎样wordpress自定义代码在哪里设置
  • 福州营销网站建设老品牌网站开通
  • 电子商务网站体系结构有哪些?网站开发规划书怎么写
  • 建设一个网站要多少钱建设银行信用卡卡网站首页
  • 百度推广效果怎样seo网上培训课程