java简单工厂设计模式
2013-12-17 09:53
477 查看
工厂模式主要是为创建对象提供了接口。工厂模式按照《Java与模式》中的提法分为三类:
1. 简单工厂模式(Simple Factory)
2. 工厂方法模式(Factory Method)
3. 抽象工厂模式(Abstract Factory)
这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用工厂模式的两种情况:
1.在编码时不能预见需要创建哪种类的实例。
2.系统不应依赖于产品类实例如何被创建、组合和表达的细节
今天给大家讲一下简单工厂设计模式,首先大家先理解下面一个例子
女娲抟土造人
话说:“天地开辟,未有人民,女娲抟土为人。”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面。
女娲造人,这就是简单工厂模式的应用。
首先,在这个造人的思想里面,有几个重要的角色:女娲本身、抽象的人的概念和女娲所造出的一个个具体的人。
1.)女娲是一个工厂类,也就是简单工厂模式的核心角色。
2.)具休的一个个的人,包括张三,李四等。这些人便是简单工厂模式里面的具体产品角色
3.)抽象的人是最早只存在于女娲的头脑里的一个想法,女娲按照这个想法造出的一个个具体的人,便都符合这个抽象的人的定义。换言之,这个抽象的想法规定了所有具体的人必须都有的接口(特征或者功能)
其UML类图出下所示:
下面继续给出一个运算器的代码例子,让大家更好的理解简单工厂设计模式的运用
先构造一个运算器接口
Operation.java
OperationAdd.java
OperationDiv.java
创建一个运算工厂
OperationFactory.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] 设计模式之工厂系列 01 简单工厂 - 缺点 :产生产品系列的时候很麻烦,会工厂泛滥
- java设计模式----简单工厂模式
- 以Java代码为例讲解设计模式中的简单工厂模式
- 设计模式之—简单工厂方法(StaticFactory )-Java实现
- java 设计模式-创建模式之简单工厂模式
- Java设计模式之简单工厂设计模式
- JAVA设计模式之------简单工厂模式
- java设计模式--简单工厂
- java设计模式之简单工厂模式
- 设计模式(一)简单工厂(创建型)(Java&&PHP)
- (1)java设计模式之简单工厂模式
- java设计模式笔记之简单工厂
- Java技术_每天掌握一种设计模式(003)_使用场景及简单实例(创建型:工厂方法)
- 黑马程序员_JAVA设计模式之简单工厂
- java设计模式_简单工厂
- Java设计模式——简单工厂(Simple Factory)