它由三种角色组成:
1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
3、具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
下面用该模式实现简单的计算器功能(本例将其功能大大缩减):
事先准备:
1.业务逻辑与界面逻辑分离降低耦合度,方便维护及扩展
2.通过继承多态的方式使具体功能分离
正式开始:
首先定义一个Operation接口:
1 package test02; 2 3 public interface Operation { 4 float getResult(); 5 } Operation.java
接着完成加减法的Operation具体实现类:
1 package test02; 2 3 public class SumOperationImp implements Operation{ 4 5 @Override 6 public float getResult() { 7 float result=0; 8 result = 1+1; 9 return result; 10 11 } 12 13 } SumOperation.java
1 package test02; 2 3 public class SubOperationImp implements Operation{ 4 5 @Override 6 public float getResult() { 7 float result=0; 8 result = 1-1; 9 return result; 10 11 } 12 13 } SubOperation.java
再实现静态工厂类用来实例化对象:
1 package test02; 2 3 public class OperationFactory { 4 public static Operation getOperation (String oper) { 5 if("+".equals(oper)){ 6 return new SumOperationImp(); 7 } 8 else { 9 return new SubOperationImp(); 10 } 11 12 } 13 } OperationFactory.java
最终完成测试类:
1 package test02; 2 3 import java.util.Scanner; 4 5 public class Test { 6 public static void main(String[] args) { 7 Scanner scanner =new Scanner(System.in); 8 String oper =scanner.nextLine(); 9 Operation operation= OperationFactory.getOperation(oper); 10 float result = operation.getResult(); 11 System.out.println(result); 12 } 13 } Test.java
初学《大话设计模式》