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

青浦建设网站公司东莞网站制作建设收费

青浦建设网站公司,东莞网站制作建设收费,个人如何接网站建设订单,贺州网站推广前言 设计模式分为三大类#xff1a; 创建型模式#xff1a;工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式#xff1b; 结构型模式#xff1a;适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式#xff1b; 行为型模式#xff1… 前言 设计模式分为三大类 创建型模式工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式 结构型模式适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式 行为型模式策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式 简单工厂 首先要明确的是简单工厂模式不属于23种设计模式它引入了创建者的概念将实例化的代码从应用代码中抽离在工厂类的静态方法中只处理被创建的对象如果业 务需要变更则需要在工厂类中添加具体的实现类因此维护性较差。以工厂创建咖啡为例说明如下 1. 物品标识类Coffee和已有的类 package com.oxygen.bean;/*** * 咖啡则作为一种抽象概念拿铁、美式咖啡、卡布奇诺等均为咖啡家族的一种产品* author Oxygen**/ public abstract class Coffee {public abstract String desc(); //获取coffee名称}class Americano extends Coffee { // 美式咖啡 Overridepublic String desc() {return 美式咖啡;}}class Cappuccino extends Coffee { //卡布奇诺 Overridepublic String desc() {return 卡布奇诺;}}class Latte extends Coffee { //拿铁 Overridepublic String desc() {return 拿铁;}} View Code 2. 简单工厂 package com.oxygen.bean;/*** 创建材料的工厂类* author Oxygen * date 2018年10月16日*/ public class SimpleFactory {/*** * param type 材料类型* return*/public static Coffee createInstance(String type) {if (Americano.equals(type)) {return new Americano();} else if (Cappuccino.equals(type)) {return new Cappuccino();} else if (Latte.equals(type)) {return new Latte();} else {throw new RuntimeException(type[ type ]类型不可识别没有匹配到可实例化的对象);}}public static void main(String[] args) {System.out.println(SimpleFactory.createInstance(Americano).desc());System.out.println(SimpleFactory.createInstance(Cappuccino).desc());System.out.println(SimpleFactory.createInstance(Latte).desc());} } View Code 3. 输出结果 美式咖啡 卡布奇诺 拿铁 工厂方法  工厂方法模式其定义了一个创建对象的接口由子类决定要实例化的类是哪一个工厂方法让类把实例化推迟到了子类也就是说一个工厂只能生成特定的Coffee 1. 工厂类 package com.oxygen.bean;/*** Coffee工厂* author Oxygen * date 2018年10月16日*/ public abstract interface CoffeeFactory {public abstract Coffee[] createCoffee();public static void main(String[] args) {CoffeeFactory chinaCoffeeFactory new ChinaCoffeeFactory();Coffee[] chinaCoffees chinaCoffeeFactory.createCoffee();System.out.print(中国咖啡工厂可以生产的咖啡有);print(chinaCoffees);CoffeeFactory americaCoffeeFactory new AmericaCoffeeFactory();Coffee[] americaCoffees americaCoffeeFactory.createCoffee();System.out.print(美国咖啡工厂可以生产的咖啡有);print(americaCoffees);}public static void print(Coffee[] c) {for (Coffee coffee : c) {System.out.print(coffee.desc() );}System.out.println();} }class ChinaCoffeeFactory implements CoffeeFactory { //中国咖啡工厂 Overridepublic Coffee[] createCoffee() {return new Coffee[] { new Cappuccino(), new Latte() };}}class AmericaCoffeeFactory implements CoffeeFactory { //美国咖啡工厂 Overridepublic Coffee[] createCoffee() {return new Coffee[] { new Americano(), new Latte() };}} View Code 2. 输出结果 中国咖啡工厂可以生产的咖啡有卡布奇诺 拿铁 美国咖啡工厂可以生产的咖啡有美式咖啡 拿铁 抽象工厂 提供一个接口用于创建相关或依赖对象的家族而不需要明确指定具体类在上述的场景上继续延伸咖啡工厂做大做强引入了新的饮品种类茶、 碳酸饮 料。中国工厂只能制造咖啡和茶美国工厂只能制造咖啡和碳酸饮料如果继续使用上述工厂方法方式除去对应的产品实体类还需要新增2个抽象工厂茶制造 工厂、碳酸饮料制造工厂4个具体工厂实现。 随着产品的增多会导致类爆炸这显然是不能接受的。所以这里引出一个概念产品家族在此例子中不同的饮品就组成我们的饮品家族 饮品家族开始承担 创建者的责任负责制造不同的产品。如下 package com.oxygen.bean;public interface AbstractDrinksFactory {Coffee createCoffee(); //制造咖啡 Tea createTea(); //制造茶 Sodas createSodas();//制造碳酸饮料 }/*** 中国饮品工厂制造咖啡与茶*/ class ChinaDrinksFactory implements AbstractDrinksFactory {Overridepublic Coffee createCoffee() {return new Latte();}Overridepublic Tea createTea() {return new MilkTea();}Overridepublic Sodas createSodas() {// TODO Auto-generated method stubreturn null;} }/*** 美国饮品制造工厂制造咖啡和碳酸饮料*/ class AmericaDrinksFactory implements AbstractDrinksFactory {Overridepublic Coffee createCoffee() {// TODO Auto-generated method stubreturn new Latte();}Overridepublic Tea createTea() {// TODO Auto-generated method stubreturn null;}Overridepublic Sodas createSodas() {// TODO Auto-generated method stubreturn new CocaCola();}} View Code 总结 工厂模式可以帮助我们针对抽象接口编程而不是针对具体类编程在不同的场景下按具体情况来 1. 简单工厂不能算是真正意义上的设计模式但可以将客户程序从具体类解耦 2. 工厂方法使用继承把对象的创建委托给子类由子类来实现创建方法可以看作是抽象工厂模式中只有单一产品的情况 3. 抽象工厂使对象的创建被实现在工厂接口所暴露出来的方法中 转载于:https://www.cnblogs.com/oxygenG/p/9797254.html
http://www.pierceye.com/news/510000/

相关文章:

  • 农业 网站源码网站制作产品优化
  • 企业公司网站制作建设怎么区分营销型网站
  • 如何选择顺德网站建设网站开发源代码
  • 北京城乡建设部网站网站页面是自己做还是使用模板
  • 网新企业网站管理系统厦门好景科技做网站
  • 手机网站开发语言深圳网站建设培训
  • wordpress做的视听网站怎么用ftp清空网站
  • 网站建设能干什么网页设计代码模板人物介绍
  • 桂阳网站设计做p2p投资理财的网站
  • 做学术论文的网站从化专业做网站
  • 从化网站制作狮山公司网站建设
  • 网站开发验证码图片不显示php 自动做网站点击量
  • 大连网站开发费多少钱合肥企业网站建设工作室
  • 小企业网站建设的基础知识wap网站 开发
  • 地方门户网站赚钱吗沈阳黑酷做网站建设优化公司怎么样
  • 佛山市seo网站设计工具内部网站建设软件下载
  • 深圳网站建设高端设计网站建设 补充协议
  • 枣阳网站建设 枣阳山水数码自己建网站备案
  • 网站网站制作多少钱共享看世界新域名
  • 网站空间 阿里云wordpress多站点403
  • 下载网站备案的核验单免费ppt模板下载红色
  • discuz 网站备案信息代码温州网站建设优化公司
  • 外国人做汉字网站微网站开发手机模拟器
  • dede做网站网站群 优点
  • 网站制作多久能完成客户管理软件公司
  • 做网站最好的引流推广方法软件
  • 烟台网站建设4038gzs成都建设网上商城平台公司
  • 网站建设费在会计上怎么入账做学校网站的目的
  • 常德网站建设设计下载百度安装
  • 站长平台有哪些广东东远建设工程管理有限公司网站