2 设计模式之工厂方法(二)

来源:互联网 发布:网络游戏服务端编程 编辑:程序博客网 时间:2024/06/06 03:25

上一篇关于设计模式中“简单工厂”模式的介绍让我们知道,它虽然有自己的优点,工厂类中包括了必要的逻辑判断,让客户端选择实例化相应的类,这样的好处就是除去了下具体实现的依赖,但是在我们也分析了在面临添加新功能时,它会违背设计模式里面的“开放-封闭”原则,于是引出了今天介绍的工厂方法模式,它相比简单工厂的不同之处就是它把选择实例化的类移到了客户端,这样的话在添加新功能时仅仅只需要添加新功能和修改相应的客户端组装代码即可,代码如下:

1 工厂抽象接口IOperationFactory.javapackage com.ops.factory.method.base;import com.ops.factory.Operation;public interface IOperationFactory {public Operation createOperation();}下面是与运算相关的具体工厂实现类2 AddOperationFactory.javapackage com.ops.factory.method.base;import com.ops.factory.AddOperation;import com.ops.factory.Operation;public class AddOperationFactory implements IOperationFactory {@Overridepublic Operation createOperation() {return new AddOperation();}}3 SubOperationFactory.javapackage com.ops.factory.method.base;import com.ops.factory.Operation;import com.ops.factory.SubOperation;public class SubOperationFactory implements IOperationFactory {@Overridepublic Operation createOperation() {return new SubOperation();}}4 MultiOperationFactory.javapackage com.ops.factory.method.base;import com.ops.factory.MultiOperation;import com.ops.factory.Operation;public class MultiOperationFactory implements IOperationFactory {@Overridepublic Operation createOperation() {return new MultiOperation();}}5 DivOperationFactory.javapackage com.ops.factory.method.base;import com.ops.factory.DivOperation;import com.ops.factory.Operation;public class DivOperationFactory implements IOperationFactory {@Overridepublic Operation createOperation() {return new DivOperation();}}下面是客户端组装代码:package com.ops.factory.method.main;import org.junit.Test;import com.ops.factory.Operation;import com.ops.factory.method.base.AddOperationFactory;import com.ops.factory.method.base.IOperationFactory;public class FactoryMethodClient {@Testpublic void test() {int numberA = 35;int numberB = 7;IOperationFactory opFactory = new AddOperationFactory();Operation addOp = opFactory.createOperation();int result = addOp.getResult(numberA, numberB);System.out.println("resut = " + result);}}



0 0
原创粉丝点击