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

中国互联网站建设营销型网站免费企业网站模版

中国互联网站建设,营销型网站免费企业网站模版,网站开发要学些什么,wordpress评论颜文字文章目录 一、介绍二、基本组件三、演示案例1. 定义抽象工厂2. 定义抽象产品3. 定义具体工厂4. 定义具体产品5. 代码演示6. 代码改造 四、总结 一、介绍 抽象工厂模式(Abstract Factory Pattern)属于创建型设计模式。用于解决比工厂方法设计模式更加复杂的问题。 复杂到哪里了… 文章目录 一、介绍二、基本组件三、演示案例1. 定义抽象工厂2. 定义抽象产品3. 定义具体工厂4. 定义具体产品5. 代码演示6. 代码改造 四、总结 一、介绍 抽象工厂模式(Abstract Factory Pattern)属于创建型设计模式。用于解决比工厂方法设计模式更加复杂的问题。 复杂到哪里了呢 我们将抽象工厂模式和工厂模式进行简单的比较或许可以有更好的理解 工厂方法设计模式中指定工厂只能创建对应的单个产品是一对一的关系。抽象工厂模式中不仅需要创建产品的工厂还多了一个创建工厂的工厂(顶级工厂)。当顶级工厂创建一个工厂时顶级工厂与工厂是一对一的关系(等同于工厂模式)被创建的工厂可以生产多个产品因此顶级工厂与产品之间是一对多的关系。 二、基本组件 在我们使用抽象工厂设计模式时一般需要以下组件 抽象工厂工厂实现抽象产品产品实现 一般来讲从抽象工厂中获取的对象类型为抽象类型其具体类型由具体的工厂实现决定。 三、演示案例 唉到了结婚的年纪了我们就以结婚为例吧。 1. 定义抽象工厂 结婚是一件十分麻烦的事情需要准备非常非常多的事情比如婚车、婚房、婚纱照等等。所以我们以结婚为工厂以婚车婚房婚纱照为产品。先对结婚这件事情做一个规范的定义。 public interface MarriageFactory {/*** 产品 - 婚车*/Car getCar();/*** 产品 - 婚房*/House getHouse();/*** 产品 - 婚纱照*/Picture getPicture();}2. 定义抽象产品 婚车 public interface Car {/*** 坐婚车*/void drive(); }婚房 public interface House {/*** 买房*/void buyHouse(); }婚纱照 public interface Picture {/*** 照相*/void takePicture(); }3. 定义具体工厂 我们结婚一般都是要找一个婚庆公司假设婚庆公司都提供结婚的一条龙服务包括婚车、婚房、婚纱照等业务现在我们城里有两家婚庆公司汤姆婚庆(TomFactory) 和 杰瑞婚庆(JerryFactory)。 汤姆婚庆(TomFactory) 汤姆婚庆公司提供具有汤姆特色的业务如汤姆婚车(TomCar)、汤姆婚房(TomHouse)、汤姆照相(TomPicture)。 public class TomFactory implements MarriageFactory {public TomFactory() {System.out.println(选择了汤姆婚庆公司);}Overridepublic Car getCar() {return new TomCar();}Overridepublic House getHouse() {return new TomHouse();}Overridepublic Picture getPicture() {return new TomPicture();} }杰瑞婚庆(JerryFactory) 杰瑞婚庆公司提供具有杰瑞特色的业务如杰瑞婚车(TomCar)、杰瑞婚房(TomHouse)、杰瑞照相(TomPicture)。 public class JerryFactory implements MarriageFactory {public JerryFactory() {System.out.println(选择了杰瑞婚庆公司);}Overridepublic Car getCar() {return new JerryCar();}Overridepublic House getHouse() {return new JerryHouse();}Overridepublic Picture getPicture() {return new JerryPicture();} }4. 定义具体产品 汤姆婚庆公司提供具有汤姆特色的业务如汤姆婚车(TomCar)、汤姆婚房(TomHouse)、汤姆照相(TomPicture)。 public class TomCar implements Car{/*** 婚车*/Overridepublic void drive() {System.out.println(汤姆婚车开起来...);} }public class TomHouse implements House{/*** 买房*/Overridepublic void buyHouse() {System.out.println(汤姆一品房价50w.....);} }public class TomPicture implements Picture{/*** 照相*/Overridepublic void takePicture() {System.out.println(汤姆照相馆照相.....);} }杰瑞婚庆公司提供的业务具有杰瑞特色如杰瑞婚车(TomCar)、杰瑞婚房(TomHouse)、杰瑞照相(TomPicture)。 public class JerryCar implements Car{/*** 婚车*/Overridepublic void drive() {System.out.println(杰瑞婚车开起来...);} }public class JerryHouse implements House{/*** 买房*/Overridepublic void buyHouse() {System.out.println(杰瑞一品房价30w...);} }public class JerryPicture implements Picture{/*** 照相*/Overridepublic void takePicture() {System.out.println(杰瑞照相馆照相.....);} }5. 代码演示 下面我们对上述案例进行代码演示 选择杰瑞婚庆公司 public static void main(String[] args) {// 选择杰瑞婚庆公司MarriageFactory factory new JerryFactory();Car car factory.getCar();House house factory.getHouse();Picture picture factory.getPicture();car.drive();house.buyHouse();picture.takePicture(); }输出结果 选择汤姆婚庆公司 public static void main(String[] args) {// 选择杰瑞婚庆公司MarriageFactory factory new TomFactory();Car car factory.getCar();House house factory.getHouse();Picture picture factory.getPicture();car.drive();house.buyHouse();picture.takePicture(); }输出结果 6. 代码改造 在上面的测试代码中我们注意到我们只是对new 婚庆公司的实际类型做了修改而产品相关代码没有任何改动。于是我们可以将对婚庆公司的实例化过程按照工厂方法设计模式那样转移到工厂中只需要抽象工厂根据传入的参数返回不同的工厂实例即可。 在抽象工厂中添加静态方法getInstance() 和 枚举类MarriageType static MarriageFactory getInstance(MarriageType type) {if (type.equals(MarriageType.JERRY)) {return new JerryFactory();}return new TomFactory(); }enum MarriageType {JERRY,TOM; }修改测试代码 public static void main(String[] args) {// 选择杰瑞婚庆公司MarriageFactory factory MarriageFactory.getInstance(MarriageFactory.MarriageType.JERRY);Car car factory.getCar();House house factory.getHouse();Picture picture factory.getPicture();car.drive();house.buyHouse();picture.takePicture(); }另外在静态方法getInstance() 中我们可以再次结合单例模式来避免频繁实例化婚庆公司对象。 四、总结 抽象工厂与工厂方法的最主要区别就是抽象工厂允许创建多个产品而工厂方法只允许创建一个产品。该设计模式有一个致命缺点每当我们在工厂中添加新的产品时工厂的抽象和具体实现都需要修改。当工厂的具体实现较多时每一个实现都必须适配新添加的产品。 纸上得来终觉浅绝知此事要躬行。 ————————我是万万岁我们下期再见————————
http://www.hkea.cn/news/14424300/

相关文章:

  • 厦门网站建设方案咨询中国建筑网上测评
  • 昆山网站建设公司哪家好ie6 网站模板
  • 台州做网站多少钱福州做网站设计
  • 网页建设技术和网站策划书山东省住房和城乡建设厅网站教育中心
  • 网站建设线框图企业vi品牌设计公司
  • 珠海网站建设 金碟网站模板加后台
  • 深圳电信网络建站重庆网站建设在哪里
  • 常州免费网站制作手机设计logo软件免费
  • 海口模板建站公司机械行业网站模板
  • 同性性做视频网站wordpress 密码忘了
  • 营口网站制作公司怀化网站优化加徽信xiala5效果好
  • 手机网站 asp汕头外包公司
  • 2019长沙企业网站建设优惠刘连康seo培训哪家强
  • 网站信用认证可以自己做吗平面广告设计专业的学校
  • 企业起名网站怎么做wordpress 专题页
  • 做投标网站条件wordpress首页是哪个文件
  • 动漫做a视频网站有哪些朝阳区网站建设公司
  • 辽源建站公司网页图片加载慢解决方法
  • 国外网站怎么打开天津 网站开发
  • 一级A做爰片安全网站保险咨询免费24小时在线
  • 网站风格 颜色搭配seo建站系统
  • 网站怎么做联系我们页面网站色调
  • 南岗哈尔滨网站建设建安证查询网站
  • 房产网站建设整体架构wordpress图书主题
  • 网域高科学校网站管理系统个人微博网页制作代码教程
  • 专业网站设计 软件wordpress博客付费
  • dede网站 异步生成可以做盗版漫画网站吗
  • 成品网站软件大全下载whois查询
  • 苍南县龙港哪里有做网站开封市做网站的公司
  • 做加盟的网站建设包装设计效果图生成器