自己写的。可能有不对的地方,请指正,勿喷!!!
简单工厂模式,用的比较普遍,用一个类做工厂,实现一个方法。调用时通过参数判断实例化哪个类,当然返回的类是继承了一个类的子类
看例子吧
运算方法超类
package com.mode; /** * 计算器运算超类 * @author hao * */ public class Caculator { /** 参数1 */ public double numA; /** 参数2 */ public double numB; /** * 获得结果 * @return 运算之后的结果 */ public double getResult() { double result = 0; return result; } }
然后,加法类,乘法类,除法类继承之,实现getResult()方法
加法类:
package com.mode; /** * 加法 * * @author hao * */ public class Addition extends Caculator { @Override public double getResult() { return numA + numB; } }
乘法类:
package com.mode; /** * 乘法 * * @author hao * */ public class Multiplication extends Caculator { @Override public double getResult() { return numA * numB; } }
工厂类:生成我们所需要的运算对象
package com.mode; /** * 工厂类,生成运算方法 * @author hao * */ public class Factory { /** * 获取运算方式 * @param 所需要的模式类型 * @return 返回运算对象 */ public static Caculator getOperation(int mode) { switch (mode) { case Contants.Operation.ADDITION: return new Addition(); case Contants.Operation.SUBTRACTION: case Contants.Operation.MULTIPLICATION: return new Multiplication(); case Contants.Operation.DIVISION: default: break; } return null; } }
Main类,看效果
package com.mode; public class Main { public static void main(String[] args) { Caculator caculator = Factory.getOperation(Contants.Operation.ADDITION); caculator.numA = 1.2; caculator.numB = 2.5; System.out.println(caculator.getResult()); } }
我们需要加法,直接在 getOperation传入加法的参数我们即可返回所需要的对象,如果需要增加运算方式,我们直接继承Caculator即可,然后在Factory中的switch中增加一个case段。。