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

电商网站建设技术外包本地顺德网站建设

电商网站建设技术外包,本地顺德网站建设,直播交友app开发,网站建设宣传文章目录 一、介绍二、基本组件三、演示案例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://wiki.neutronadmin.com/news/387054/

相关文章:

  • 设计网站国外php网站制作工具
  • 邯郸wap网站建设价格wordpress移动导航插件
  • 网站 加域名网页设计html教程
  • 山西中交建设工程招标有限公司网站基金会网站开发方案
  • 北京网站建设策划建设卢氏住房和城乡建设厅网站
  • 如果我的网站被百度收录了_以后如何做更新争取更多收录网站建设提供源代码有什么用
  • 网站的建设服务中心网站公司建设个服务号多少钱
  • 自助做app的网站wordpress问答社区模板
  • 企业网站怎么做两种语言如何创建链接
  • 重庆企业网站推广报价西安网站建设云李
  • 网站建设中html中关于图片显示的标签有哪些wordpress优酷自适应
  • 网站管理系统深圳城建局
  • 云南网站推广的目的西安网站建设培训中心
  • 科技公司网站模板下载手机开发者模式利弊
  • 检查目录遍历漏洞wordpress站点内网域名
  • 设计师网站 知乎个人主页是什么
  • 怎么把自己的网站做自适应网站中企动力建的网站如何
  • 个人主页界面网站搬家
  • 哪个网站可以做微信推送深圳专业网站建设平台网页
  • 建立一个购物网站做淘宝客必须建网站吗
  • 关键词工具网站厦门建站比较好的公司
  • 建设大学网站费用网站建设详细过程
  • 怎么创建网站域名做玩具什么 网站比较好
  • 行业门户网站运营wordpress分类不显示图片
  • 昆明建网站的公司cpanel伪静态wordpress
  • 成都网站排名优化报价wordpress本地数据库密码忘记
  • 兰州市网站建设公司怎样查看wordpress
  • 青岛做网站优化的公司一站式做网站
  • 二道网站建设上海企业服务云官网
  • 用easyui 做的网站郑州妇科医院哪个医院最好