设计模式之简单工厂模式
2015-12-30 13:56
253 查看
设计模式之简单工厂模式
简单工厂模式又名为:静态工厂方法模式。主要使用在业务较简单的情况下。
它由三种角色组成:
1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
3、具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
下面用该模式实现简单的计算器功能(本例将其功能大大缩减):
事先准备:
1.业务逻辑与界面逻辑分离降低耦合度,方便维护及扩展
2.通过继承多态的方式使具体功能分离
正式开始:
首先定义一个Operation接口:
Operation.java
接着完成加减法的Operation具体实现类:
SumOperation.java
SubOperation.java
再实现静态工厂类用来实例化对象:
OperationFactory.java
最终完成测试类:
Test.java
初学《大话设计模式》
简单工厂模式又名为:静态工厂方法模式。主要使用在业务较简单的情况下。
它由三种角色组成:
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
初学《大话设计模式》
相关文章推荐
- 配置springMVC时出现的问题
- JS学习之正则表达式
- Builder模式在Java中的应用
- Html学习之html的文件基本标记(1)
- Html学习之html的基本结构
- 对于Android stdio 新建工程出错的经验
- Android开发之应用与开发环境(一)
- JAVA解析XML之SAX方式
- JAVA解析XML之DOM方式
- Linux网络配置管理
- IOS版添加phonegap--微信授权插件教程
- JS学习总结之操作文档对象模型
- SQL 实用语法
- Struts form传值
- spring mvc 及普元nui前端框架学习笔记
- RGB与YUV相互转换
- Oracle 用户管理与权限控制
- Redis Cache 简介
- 程序员常用网站
- SQL 获取 IDENTITY 三种方法 SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的区别