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

网站评估做的好不好高中做信息技术题网站

网站评估做的好不好,高中做信息技术题网站,丽江做网站,汉中公司网站建设本文探讨两种广泛使用的创建型模式——简单工厂模式和工厂方法模式#xff0c;解释他们的实现细节、优势以及应用场景。 在下一篇文章中#xff0c;我会补充抽象工厂模式#xff0c;其实工厂模式主要就是为了封装对象的创建过程#xff0c;如果我们不进行封装#xff0c;…本文探讨两种广泛使用的创建型模式——简单工厂模式和工厂方法模式解释他们的实现细节、优势以及应用场景。 在下一篇文章中我会补充抽象工厂模式其实工厂模式主要就是为了封装对象的创建过程如果我们不进行封装如果对象较多创建过程就需要我们自己new来new去并且还要记住具体类的初始化方法还是太麻烦了。 也就是说如果我们需要什么样的对象就直接去找工厂申请让它来代工工厂提供了一个统一的接口。 工厂模式使用的前提一般就是我们要创建的类比较多的时候来使用可以大大简化程序猿的工作量。 文章目录 简单工厂模式实现示例优点和适用场景缺点 工厂方法模式实现示例局限性 简单工厂模式 实现示例 假设我们需要一个基于车辆类型创建车辆对象的应用 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; } };我们现在创建具体的Bmw和Audi对象 int main () {Car *p1 new BMW(X1);Car *p2 new Audi(A6);return 0; }如果我们需要创建的类比较多并且对象的初始化方法比较复杂那么这样的类实例化就不太符合一个良好的设计要求所以现在我们对类进行封装 enum CarType {BMW, AUDI }; class SimpleFactory { public:Car* createCar(CarType ct) {switch (ct){case BMW:return new Bmw(X1);case AUDI:return new Audi(A6);default:cout 传入工厂的参数不正确 ct endl;break;}return nullptr;} };我们创建了一个美剧类并且设计一个简单工厂类之后我们需要创建对象只要调用该类即可 int main () {unique_ptrSimpleFactory factory(new SimpleFactory());unique_ptrCar p1(factory-createCar(BMW));unique_ptrCar p2(factory-createCar(AUDI));p1-show();p2-show();return 0; }很明显简单且直观。 优点和适用场景 简单工厂模式的主要优点是减少系统中的代码重复并且封装了对象创建的细节使得代码库更简洁、更易于维护。 缺点 但是简单工厂也有不好的地方从逻辑上来讲同一个工厂不应该啥都建啊又是宝马奥迪、以后说不定还有手机啥的不符合逻辑。 并且我们的这个简单工厂不符合“开闭原则”如果我们有新增的对象、或者想删除某个对象都必须修改整个接口这个接口就会变来变去永远不封闭。 第一一个工厂负责各种对象的创建不太符合逻辑第二简单工厂的接口设计根本就不封闭不符合开闭原则 所以我们的工厂方法应运而生。 工厂方法模式 工厂方法模式是简单工厂的一种扩展每个具体产品都有一个相应的工厂这样也符合我们真是生产中的逻辑。 当然最重要的是工厂方法模式符合我们的“开闭原则”对扩展开放对修改封闭 实现示例 我们还是使用上述的例子我们再定义一个工厂方法的抽象类然后为每一个产品都设计一个工厂类 //工厂方法 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; }使用工厂方法后很明显我们如果想生产新的产品直接写一个专属的工厂就可以了而不需要改变我们原有的宝马工厂或者奥迪工厂。所以该设计符合我们的开闭原则。 局限性 工厂方法模式最大的一个问题就在于 假如我们现在考虑一类产品也就是所谓的产品族有关联关系的系列产品 比如说“华为工厂”我们就可以生产华为手机、耳机、充电线等等我们不可能也不应该为每一种产品都专门设计一个工厂如果这样设计工厂那我们的产品类就太多太多了。 那么如何解决呢我们可以引入抽象工厂模式。 具体请看本文【C设计模式二抽象工厂模式】
http://www.hkea.cn/news/14545321/

相关文章:

  • 网站seo完整的优化方案辛集建设局网站
  • 城桥微信网站设计制作域名注册商查询工具
  • 戴尔网站建设成品网站开发
  • 网站建站方式有哪些wordpress關閉
  • 中国建设银行企业门户网站蛋糕网站网页设计
  • 工贸一体化企业建设电子商务网站的误区做物流的可以在那些网站找客户端
  • 维护一个网站要多少钱网站关键词排名软件
  • 网站建设销售简历如何维护公司网页
  • 济南手机网站建设公司哪家好挂机宝怎么做网站
  • 网站建设整体情况介绍全新微信号2元一个自动下单
  • 免费做简单网站全球速卖通官网
  • 谷歌网站网站建设 环保 图片
  • 网站关键词提升导游网站如何建设的
  • 网站建设,h5,小程序浙江网缘科技有限公司
  • 怎么做网站_廊坊网站建设优化
  • 猫咪社区官网在线最新在seo优化中
  • 南昌做网站哪个好国外装修网站模板
  • jquery特效网站淄博网站制作优化推广
  • 网站建设 长沙百姓网抖音营销网站建设价格
  • 温州企业建站系统模板外贸平台有那些
  • 重庆微信网站作公司做一直播网站要多少钱
  • 阅读转发网站那些做的比较好2003配置网站与2008的区别
  • 做彩票类网站用什么服务器wordpress自动采集源码
  • h5网站案例提供网站建设工具
  • 灯具网站建设做外贸一般在哪个网站
  • 国家城乡住房建设部网站青岛中企动力科技股份有限公司
  • 简单个人网站设计儿童网站源码
  • 网站界面美观度做网站实例
  • pp下载安装 app杭州网站优化咨询
  • 医疗网站建设网怎么做软文代发平台网站