设计模式-简单工厂模式/静态工厂方法(Static Factory Method)
来源:互联网 发布:telnet查端口linux 编辑:程序博客网 时间:2024/06/09 22:12
使用原因
同一个调用,需要不同对象。统一通过工厂生产不同对象,创建对象的逻辑在工厂中。
定义
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,不属于23种GOF设计模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
优点
工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定该创建哪个具体类的对象.通过使用工厂类,外界不需要直接创建对象,直接通过工厂获取需要的对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。
缺点
由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。(修改产品改产品,增加产品需要改工厂和产品)
ps.以上内容来自百度百科
示例:
工厂根据传入的数据,生产出相应的对象
//计算方式 工厂类,用于生产相应的算法子类public class OperationFactory {public Operation getOperation(String operator){Operation oa = null;switch(operator){case "+":oa = new AddOperation();return oa;case "-":oa = new SubtractOperation();return oa;/*case "*":oa = new MultiplicationOperation();return oa;case "/":oa = new DivisionOperation();return oa;*/}return null;}}
//算法接口 定义方法public interface Operation { public double getResult(double numA, double numB); }
//算法实现类,由工厂类创建,重写父类中的虚函数 加减乘除都需要有单独的类public class AddOperation implements Operation {@Overridepublic double getResult(double numA, double numB) {// TODO Auto-generated method stubreturn numA + numB;}}........
//测试类import java.util.Scanner;public class MainProgream {public static void main(String args[]){while(true){try{Scanner input =new Scanner(System.in);System.out.println("input numA"); String instr = input.nextLine(); double numA = Double.parseDouble(instr); System.out.println("input numB");instr = input.nextLine();double numB = Double.parseDouble(instr);System.out.println("input + - * / ");instr = input.nextLine();String operator = instr;System.out.print(numA + operator + numB + "=" );Operation o = new OperationFactory().getOperation(operator);System.out.println(o.getResult(numA, numB));}catch(Exception e){System.out.println("输入格式不对");}}}}
阅读全文
0 0
- 设计模式-简单工厂模式/静态工厂方法(Static Factory Method)
- 设计模式 - 简单工厂模式/静态工厂模式(Static Factory Method) C++实现
- 简单工厂模式(静态工厂方法(Static Factory Method)模式)
- 简单工厂模式 (Simple Factory Pattern) / 静态工厂方法(Static Factory Method)模式
- 设计模式-工厂方法(Factory Method)
- 工厂方法(Factory Method)设计模式
- 设计模式 一 工厂方法Factory Method(工厂模式)
- 设计模式系列(四)简单工厂模式(Simple Factory Pattern/Static Factory Method)
- 简单工厂模式Static Factory Method
- 简单工厂模式(Static Factory Method
- C++简单工厂模式-Static Factory Method
- 设计模式-Simple Factory 简单工厂模式(静态工厂)
- 设计模式-工厂方法模式(factory method)
- 设计模式-工厂方法模式(Factory Method)
- 【设计模式】-工厂方法模式-Factory Method
- 设计模式 工厂方法模式 factory method
- 设计模式 工厂方法模式 Factory Method
- 一、简单工厂模式(Static Factory Method)
- javaseday15(String)
- 新萝卜家园windows xp 安装之后fonts中字体在 word ps中不显示
- Android Studio 解决resolve dependencies 'classpath'卡住
- 炎炎夏日,清凉办公
- 生成树协议配置与管理STP——2
- 设计模式-简单工厂模式/静态工厂方法(Static Factory Method)
- UVA1336FixingTheGreatWall
- 22. Generate Parentheses
- Android学习之Intent显式,隐式
- 天气晴朗的魔法 (Kruskal)
- ElasticSearch5.4.3 环境搭建 2017 (5.1-Java Api x-pack补充说明)
- 数据挖掘入门
- Android测试系列(二)- JMeter
- java常见数据集合分析