设计模式之工厂模式
2015-12-29 10:58
399 查看
设计模式之工厂模式
什么事工厂方法模式?
工厂方法模式是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给抽象工厂的子类去做。工厂方法模式如何组成?
1.抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。2.具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
3.抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
4.具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
同样以计算器的例子来解释工厂模式
首先得有一个运算器的方法接口package test02; public interface Operation { float getResult(); }
其次分别定义加法、减法类实现该Operation接口
package test02; public class SumOperationImp implements Operation{ @Override public float getResult() { float result=0; result = 1+1; return result; } }
package test02; public class SubOperationImp implements Operation{ @Override public float getResult() { float result=0; result = 1-1; return result; } }
接着定义工厂接口用来获取运算类
package test02; public interface IFactory { void getOperation(); }
再定义加法、减法的工厂类来实现该接口
package test02; public class SumFactory implements test02.IFactory { @Override public Operation getOperation() { // TODO Auto-generated method stub return new SumOperationImp(); } }
package test02; public class SubFactory implements IFactory { @Override public Operation getOperation() { // TODO Auto-generated method stub return new SubOperationImp(); } }
最终我们来测试一下
package test02; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub IFactory factory =new SubFactory(); Operation operation =factory.getOperation(); System.out.println(operation.getResult()); } }
完毕!
为什么要使用工厂模式?
工厂模式克服了简单工厂模式违背开放-封闭原则的缺点,又保留了封装对象创建过程的优点。但也存在缺点,每增加一个产品就需要增加一个产品的工厂类,增加了额外的开发量。初学《大话设计模式》
相关文章推荐
- typedef struct和struct 的区别 用途
- 在做page查询的时候出现了一些小问题
- Mac下终端 SVN 操作[持续更新]
- Java 反射Reflection使用
- VC总是重新生成问题
- window 下PHP redis扩展插件
- MFC向导“添加变量”对话框不起效果
- codevs 2982 Aggressive cows愤怒的奶牛poj2456--二分答案
- DataList控件遍历。
- Apache Maven 入门篇
- 数据迁出
- 读取条空比例
- MFC模态对话框
- lucene 评分公式 ——forfuture1978
- Object_C 回顾 0.0.1
- angularjs controller, service, directive 的demo
- Android ViewConfiguration.getScaledTouchSlop () 用法
- 猫猫学iOS之iOS键盘隐藏,下一个textField,键盘控制第三方好用框架IQKeyboardManager
- windows通过"运行"win+r实现快速打开应用程序
- javascript实现下拉提示选择框