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

网站 301/辅导机构

网站 301,辅导机构,哪个公司网站备案快,个人可以做b2b网站有哪些工厂方法模式 定义工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进…

工厂方法模式

  • 定义

工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。


 

  • 优缺点

优点:

  1. 相比简单工厂方法模式,工厂方法模式对修改不在开放,满足了开闭原则(工厂类抽象成了父类,判断创建对象的代码放到了客户端)

缺点:

  1. 一种对象对应一个工厂,类的数量增加了,程序变得复杂

 

  • 特点
  1. 抽象出一个工厂父类
  2. 工厂子类new出具体产品对象,并返回
  3. 新增具体产品对象时,对应新增工厂子类

 

  • 结构

Creator:工厂父类,返回一个产品父类的对象

ConcreteCreator:工厂子类,返回一个具体产品类的对象

Product:产品父类,工厂创建对象的父类

ConcreteProduct:具体的产品类,被工厂创建的类


 

  • 代码

例子:计算器

类图:

工厂父类

/*** @ Author     :fonxi* @ Date       :2019/5/15 0:59* @ Description:工厂父类*/
public interface Creator {Operation createOperation();
}

  

工厂子类

/*** @ Author     :fonxi* @ Date       :2019/5/15 1:00* @ Description:加法工厂*/
public class AddFactory implements Creator{@Overridepublic Operation createOperation() {System.out.println("加法运算");return new Add();}
}

  

/*** @ Author     :fonxi* @ Date       :2019/5/15 1:06* @ Description:除法工厂*/
public class DivideFactory implements Creator{@Overridepublic Operation createOperation() {System.out.println("除法运算");return new Divide();}
}

  

/*** @ Author     :fonxi* @ Date       :2019/5/15 1:08* @ Description:乘法工厂*/
public class MultiplyFactory implements Creator {@Overridepublic Operation createOperation() {System.out.println("乘法运算");return new Multiply();}
}

  

/*** @ Author     :fonxi* @ Date       :2019/5/15 1:09* @ Description:减法工厂*/
public class SubtractFactory implements Creator{@Overridepublic Operation createOperation() {System.out.println("减法运算");return new Subtract();}
}

  

产品对象父类(算法父类)

/*** @ Author     :fonxi* @ Date       :2019/5/15 1:02* @ Description:算法父类*/
public interface Operation {Double getResult(Double num1,Double num2);
}

  

具体产品对象类(算法子类)

/*** @ Author     :fonxi* @ Date       :2019/5/15 1:01* @ Description:加法算法*/
public class Add implements Operation{@Overridepublic Double getResult(Double num1, Double num2) {return num1 + num2;}
}

  

public class Divide implements Operation{@Overridepublic Double getResult(Double num1, Double num2) {return num1 / num2;}
}

  

public class Multiply implements Operation{@Overridepublic Double getResult(Double num1, Double num2) {return num1 * num2;}
}

  

public class Subtract implements Operation{@Overridepublic Double getResult(Double num1, Double num2) {return num1 - num2;}
}

  客户端调用类

/*** @ Author     :fonxi* @ Date       :2019/5/15 0:50* @ Description:客户端调用类*/
public class TestController {public void print(){try {Scanner s = new Scanner(System.in) ;System.out.println("请输入第一个数字");Double num1 = s.nextDouble();System.out.println("请输入第二个数字");Double num2 = s.nextDouble();System.out.println("请输入运算");String operator = s.next();Operation operation ;Creator creator = null;try{switch (operator){case "+":creator = new AddFactory();break;case "-":creator = new SubtractFactory();break;case "*":creator = new MultiplyFactory();break;case "/":creator = new DivideFactory();break;default:System.out.println("输入运算符有误");break;}}catch (Exception e){System.out.println("输入有误"+e.getMessage());}operation = creator.createOperation();System.out.println("运算结果:"+operation.getResult(num1,num2));}catch (Exception e){System.out.println("输入有误"+e.getMessage());}}
}

  运算结果

请输入第一个数字
80
请输入第二个数字
3
请输入运算
/
除法运算
运算结果:26.666666666666668

  


 

  • 总结

工厂方法模式又称工厂模式,23种设计模式的一种,属于创建型模式,它保持了简单工厂模式的优点,又克服了简单工厂模式的缺点,但是在一定程度上增加了程序的复杂度。

转载于:https://www.cnblogs.com/fonxi/p/10873350.html

http://www.lbrq.cn/news/1435393.html

相关文章:

  • 易语言 做的网站/今日新闻国家大事
  • 苏州注册公司代办费用/东莞seo网站管理
  • 科技副总/徐州seo
  • 深圳知名网站建设公司/免费网站seo诊断
  • 青海建设工程信息网站/百度推广管理系统
  • 公司做网站的费用怎么做账/域名查询ip爱站网
  • 网站备案域名更改公司/武汉网络推广广告公司
  • 个人网站建设/seo的培训班
  • 门头沟网站建设/百度一下百度知道
  • 南宁 网站建设 公司/最好的免费建站网站
  • 如何做旅游网站推广/百度做广告怎么做
  • 公司简介怎样写/网站seo案例
  • 手机摄影网站/什么是搜索引擎优化
  • 个人养老金制度将推/seo外链工具
  • 网站后台图片做链接/公司推广文案
  • 阿里云网站备案查询/如何做好市场推广
  • 村级网站建设/常见的网络直接营销有哪些
  • 公司查询网站查询系统/游戏推广公司怎么接游戏的
  • 官方网站查询 优帮云/全网营销代运营
  • 做bannar在哪个网站参考/优化推广排名网站教程
  • 网络规划设计师待遇/好的seo平台
  • 17网站一起做网店下载/网站seo优化外包顾问
  • 新建网站怎么做关键词/cba最新消息
  • phpcms网站转移/网络推广经验
  • java网站建设教程/网站流量统计工具
  • 做企业网站联系/深圳百度推广代理商
  • 兰州网站/网络推广的工作内容
  • 北京手机网站建设公司/百度推广收费标准
  • 百度站长工具网站认证/谷歌seo搜索优化
  • 班级网站的建设调查表/培训机构网站
  • 分布式系统架构设计模式:从微服务到云原生
  • K8s学习----Namespace:资源隔离与环境管理的核心机制
  • 美团搜索推荐统一Agent之交互协议与多Agent协同
  • Go 语言函数详解:从基础到高阶的行为逻辑构建
  • Java零基础笔记16(Java编程核心:存储读写数据方案—File文件操作、IO流、IO框架)
  • 搜索引擎核心机制解析