首页 > 代码库 > java设计模式 -------- 创建模式 之 简单工厂模式
java设计模式 -------- 创建模式 之 简单工厂模式
本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020
工厂模式是最常用的模式,因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a = new A(),工厂模式也是用来创建用来创建实例对象的,所以以后new时要多个心眼,是否可以考虑使用工厂模式。
简单工厂模式又可以分成三种模式:
1) 普通简单工厂模式
2) 多方法简单工厂模式
3) 多静态方法简单工厂模式
普通简单工厂模式:
举例:(简单的四则运算)
1. 创建四则运算的共同接口:
//操作类接口 public interface Operator{ public double Operate(double d,double e); }
2. 创建加减乘除实现类:
//加法类 public class AddOperator implements Operator{ @Override public double Operate(double a, double b) { // TODO Auto-generated method stub return a + b; } }
public class SubOperator implements Operator { @Override public double Operate(double a, double b) { // TODO Auto-generated method stub return a - b; } }
public class MulOperator implements Operator { @Override public double Operate(double a, double b) { // TODO Auto-generated method stub return a * b ; } }
public class DivOperator implements Operator { @Override public double Operate(double a, double b) { try { if(b == 0) throw new Exception("除数不能为0!"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return a / b; } }
3. 创建工厂类:
public class OperatorFactory { public Operator createOperator(String operate){ Operator oper = null; switch(operate){ case "+" : oper = new AddOperator(); break; case "-" : oper = new SubOperator(); break; case "*" : oper = new MulOperator(); break; case "/" : oper = new DivOperator(); break; } return oper; } }
4. 最后就是测试类了:
public class FactoryTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub OperatorFactory factory = new OperatorFactory(); Operator oper = factory.createOperator("*"); double result = oper.Operate(3.6,4.8); System.out.println(result); } }
多方法简单工厂模式:
在上述普通简单工厂模式中,设想这样一种状况,如果传递进来的参数是空,或者是别的不合法字符,则不能正确的创建对象,而多方法简单工厂模式则提供多个工厂方法,分别创建对象。
和普通的不同之处仅在工厂类,改动如下:
public class OperatorFactory { public Operator createAddOperator(){ return new AddOperator(); } public Operator createSubOperator(){ return new SubOperator(); } public Operator createMulOperator(){ return new MulOperator(); } public Operator createDivOperator(){ return new DivOperator(); } }这样,在测试时,就不需要传递相应的参数,只需要调用需要的工厂方法,即可:
public class FactoryTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub OperatorFactory factory = new OperatorFactory(); /*Operator oper = factory.createOperator("*");*/ Operator oper = factory.createMulOperator(); double result = oper.Operate(3.6,4.8); System.out.println(result); } }
多静态方法简单工厂模式:
所谓的静态方法,即将上面工厂类中的工厂方法置为静态的,不需要创建实例,直接调用即可。
public class OperatorFactory { public static Operator createAddOperator(){ return new AddOperator(); } public static Operator createSubOperator(){ return new SubOperator(); } public static Operator createMulOperator(){ return new MulOperator(); } public static Operator createDivOperator(){ return new DivOperator(); } }如上,将工厂方法设为静态的,则在测试时,直接调用即可。
public class FactoryTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //OperatorFactory factory = new OperatorFactory(); /*Operator oper = factory.createOperator("*");*/ Operator oper = OperatorFactory.createMulOperator(); double result = oper.Operate(3.6,4.8); System.out.println(result); } }
总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。
java设计模式 -------- 创建模式 之 简单工厂模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。