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

孝感建设网站郑州网球公开赛

孝感建设网站,郑州网球公开赛,c 网站开发 书,中国建设工程标准化协会网站引言#xff1a;除了使用new操作符之外#xff0c;还有更多制造对象的方法。同时#xff0c;实例化这个活动不应该总是公开地进行。 1.简单工厂模式 这里有一些相关的具体类#xff0c;要在运行时有一些具体条件来决定究竟实例化哪个类。这样的代码#xff08;if..elseif…引言除了使用new操作符之外还有更多制造对象的方法。同时实例化这个活动不应该总是公开地进行。 1.简单工厂模式 这里有一些相关的具体类要在运行时有一些具体条件来决定究竟实例化哪个类。这样的代码if..elseif..elseif一旦有变化或扩展就必须重新打开进行检查和修改。 Pizza orderPizza(String type) {Pizza pizza;if (type.equals(cheese)){pizza new CheesePizza();}else if (type.equals(greek)){pizza new GreekPizza();}else if (type.equals(pepperoni)){pizza new PepperoniPizza();}pizza.prepare();pizza.bake();pizza.cut();pizza.box();return pizza;} 我们知道其中的if..elseif..elseif代码部分会改变因此我们阔以将创建pizza的代码移到一个专职创建pizza的对象中去。这个新对象就叫做“工厂”一旦有了SimplePizzaFactoryorderPizza就变成了此对象的客户。 SimplePizzaFactory可以有多个客户并且需要修改时只需要修改这个类即可。 利用静态方法定义一个简单的工厂被称为静态工厂。它不能通过继承来改变创建方法的行为 class SimplePizzaFactory { public:Pizza createPizza(String type){Pizza* pizza nullptr;if (type.equals(cheese)){pizza new CheesePizza();}else if (type.equals(greek)){pizza new GreekPizza();}else if (type.equals(pepperoni)){pizza new PepperoniPizza();}return pizza;}class PizzaStore() { private:SimplePizzaFactory* factory;public:PizzaStore(SimplePizzaFactory* factory){this-factory factory;}Pizza orderPizza(String type){// 使用工厂对象的创建方法替换new操作符Pizza* pizza factory-createPizza();pizza-prepare();pizza-bake();pizza-cut();pizza-box();return pizza;} } 简单工厂其实并不是一种设计模式反而像一种编程习惯。 2.工厂方法 由于Pizza店生意火爆需要连锁模式加盟这个时候该怎么做呢 利用SimplePizzaFactory写出三种不同的工厂如NYPizzaFactory。 NYPizzaFactory* nyFactory new NYPizzaFactory(); PizzaStore* nyStore new PizzaStore(nyFactory); nyStore-orderPizza(Veggie); 但你发现加盟店虽然是用你的工厂创建Pizza但是流程却不一样他们不切片或者使用其它厂商的盒子。因此你希望支持他们的操作把加盟店和创建Pizza捆绑在一起的同时又保持一定的弹性之前制作Pizza的代码绑定在PizzaStore里大家都一样没有弹性。 这里我没理解原文开始说不切片、不用相同盒子为了支持这个操作除了把createPizza做成抽象方法还应该把prepare, bake这个方法也封装成一个抽象方法才对 因此我们重新将createPizza方法放到PizzaStore并将其设置为“抽象方法”最后为每个区域创建一个PizzaStore的子类。 class PizzaStore() { public:Pizza orderPizza(String type){Pizza pizza createPizza();pizza-prepare();pizza-bake();pizza-cut();pizza-box();return pizza;}Pizza createPizza(String type) 0; } 现在拥有PizzaStore作为超类NYPizzaStore等只需继承它自行决定如何制造Pizza。同时PizzaStore已经有一个不错的订单系统我们希望不同加盟商都用这个系统因此我们把orderPizza直接在超类中实现。子类负责createPizza方法允许子类做决定。 由于Pizza是抽象的orderPizza()并不知道哪些具体类参与这就是解耦。 原本由一个对象负责所有具体类的实例化现在通过对PizzaStore做一些小转变变成由一群子类负责实例化 工厂方法模式通过让子类决定该创建的对象是什么来达到对象创建过程封装的目的。 依赖倒置原则要依赖抽象不要依赖具体类当你实例化一个类的时候就是在依赖它的具体类。这个原则说明了不能让高层组件依赖底层组件而且不论高层或者底层组件两者都应该依赖于抽象。 若你在orderPizza方法中写出下面这样的代码 上面代码问题在于它依赖每个Pizza类型因为他在orderPizza里面实例化了这个具体类型。虽然我们由了一个抽象Pizza但我们在代码中创建了具体的Pizza所有这个抽象没什么用。而使用工厂方法可以解决这个问题。 你可以注意到底层组件竟然在依赖高层的抽象这就是依赖倒置。
http://www.hkea.cn/news/14267232/

相关文章:

  • 儿童玩具网站模板充电宝seo关键词优化
  • 广西建设厅网站深圳网站建设深正互联
  • 邯郸市网站建设多少钱做网站大概要花多少钱
  • 营销网站建设哪里便宜北京朝阳区
  • 浙江省建设工程检测协会网站个人网站名称举例
  • 怎么做网站布局网站建设中页面模板下载
  • 做一款什么网站赚钱电商怎么做的步骤
  • 东莞凤岗企业网站建设推广网站流量分析网站
  • 天津百度网站快速排名中国五大门户网站
  • 大连网站建设报价关于网站建设的教材
  • 沈阳哪家做网站好做网站水晶头
  • 易讯企业建站系统做网站所需要的公司细责及条款
  • 虚拟网站怎么做的深圳微信网站设计
  • com后缀的网站wordpress威廉希尔插件
  • 悉知网站建设网店推广平台
  • 有哪些做婚品的网站网站开发设计概述
  • 免费建站哪个网站最好网站域名和网址一样吗
  • 邯郸移动网站制作旅游网站建设成都
  • 优化门户网站建设上海国际人力资源开发公司
  • 深圳做网站优化的公司兰亭集势网站模板
  • 网站的推广运营旺道seo优化软件
  • 网站下载服务器配置男人和女人做污的视频网站
  • 站酷网素材苏州北京商场网站建设
  • 个人制作的网站模板seo研究中心培训机构
  • 西安莲湖区建设局网站玉田网站制作
  • app开发网站开发扬州工程建设信息网官网
  • 豪华网站设计网站推广总结
  • 15年做啥网站能致富万网云虚拟主机上传网站吗
  • 黑龙江做网站公司新乡中企网站建设
  • 建设网站的分析报告wordpress 显示word文档