java简单工厂设计模式
来源:互联网 发布:2015雾霾数据统计图 编辑:程序博客网 时间:2024/06/05 23:48
工厂模式主要是为创建对象提供了接口。工厂模式按照《Java与模式》中的提法分为三类:
1. 简单工厂模式(Simple Factory)
2. 工厂方法模式(Factory Method)
3. 抽象工厂模式(Abstract Factory)
这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用工厂模式的两种情况:
1.在编码时不能预见需要创建哪种类的实例。
2.系统不应依赖于产品类实例如何被创建、组合和表达的细节
今天给大家讲一下简单工厂设计模式,首先大家先理解下面一个例子
女娲抟土造人
话说:“天地开辟,未有人民,女娲抟土为人。”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面。
女娲造人,这就是简单工厂模式的应用。
首先,在这个造人的思想里面,有几个重要的角色:女娲本身、抽象的人的概念和女娲所造出的一个个具体的人。
1.)女娲是一个工厂类,也就是简单工厂模式的核心角色。
2.)具休的一个个的人,包括张三,李四等。这些人便是简单工厂模式里面的具体产品角色
3.)抽象的人是最早只存在于女娲的头脑里的一个想法,女娲按照这个想法造出的一个个具体的人,便都符合这个抽象的人的定义。换言之,这个抽象的想法规定了所有具体的人必须都有的接口(特征或者功能)
其UML类图出下所示:
下面继续给出一个运算器的代码例子,让大家更好的理解简单工厂设计模式的运用
先构造一个运算器接口
Operation.java
public class Operation {public double numberA;public double numberB;public double getResult() throws Exception{return 0;}}具体算法的类
OperationAdd.java
public class OperationAdd extends Operation{public double getResult(){return numberA+numberB;}}OperationSub.java
public class OperationSub extends Operation {public double getResult() {return numberA - numberB;}}OperationMul.java
public class OperationMul extends Operation{public double getResult(){return numberA * numberB;}}
OperationDiv.java
public class OperationDiv extends Operation{public double getResult() throws Exception{if (numberB == 0) {throw new Exception("除数不能为0");}return numberA / numberB;}}
创建一个运算工厂
OperationFactory.java
public class OperationFactory { public static Operation createOperation(char operator) { System.out.println("正在运算"+operator+"的算法..."); Operation opr = null; switch (operator) { case '+': opr = new OperationAdd(); break; case '-': opr = new OperationSub(); break; case '*': opr = new OperationMul(); break; case '/': opr = new OperationDiv(); break; default: break; } return opr; } }UIMain.java
import java.util.Scanner;public class UIMain { public static void main(String[] args) throws Exception{ Scanner scanner = new Scanner(System.in); System.out.println("请输入第一个操作数"); double numberA = scanner.nextDouble(); System.out.println("请输入操作符"); String operator = scanner.next(); System.out.println("请输入第二个操作符"); double numberB = scanner.nextDouble(); char[] strChar = operator.toCharArray(); Operation opr = OperationFactory.createOperation(strChar[0]); opr.numberA = numberA; opr.numberB = numberB; double result = opr.getResult(); System.out.println("运算结果为: " + result); } }
以上是一个简单的例子,如果对工厂模式的认识还是很模糊的话,请看下一个例子(后续)
- java 简单工厂设计模式
- JAVA设计模式--简单工厂
- Java简单工厂设计模式
- Java设计模式---简单工厂
- Java设计模式---简单工厂
- java简单工厂设计模式
- java设计模式--简单工厂
- java设计模式----简单工厂
- java简单工厂设计模式
- java--简单工厂设计模式
- java简单工厂设计模式
- java简单工厂设计模式
- Java设计模式--工厂模式(简单工厂+工厂方法)
- Java设计模式-工厂模式(简单工厂+工厂方法)
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- JAVA设计模式 — 简单工厂模式
- 16-http编程获取网站的标题
- 再玩Go
- 安卓开发 TabActivity切换
- 数组操作
- Oracle错误小记
- java简单工厂设计模式
- 1000内的阶乘以及大数阶乘相关知识链接
- 如何确认microsoft query已经安装
- 解决问题的函数
- 再说10秒钟计算2014年某一天星期几
- 面试10大算法汇总+常见题目解答
- oracle 异步io与oracle 11g等待事件:db file async I/O submit
- Linux C 删除文件夹
- Hive架构优化教程 Hive视频教程