设计模式学习笔记之工厂模式

来源:互联网 发布:java培训有必要吗 编辑:程序博客网 时间:2024/04/30 19:01

工厂模式是提供了创建了对象的接口,将具体创建什么对象延迟到子类完成。

下面是工厂模式的实例:

有一个操作类的抽象类:

package com.DesignPolicyLearn.Factory;/* * author:Tammy Pi * function:操作的抽象类 */public abstract class Operation<T> {public abstract T operation(T t1,T t2);}

然后有一个加法类继承至操作类:

package com.DesignPolicyLearn.Factory;/* * author:Tammy Pi * function:加法操作的类 */public class AddOperation extends Operation {@Overridepublic Object operation(Object t1, Object t2) {//处理int类型if(t1 instanceof Integer && t2 instanceof Integer){return Integer.parseInt(String.valueOf(t1))+Integer.parseInt(String.valueOf(t2));}return null;}

然后有一个工厂的接口:

package com.DesignPolicyLearn.Factory;/* * author:Tammy Pi * function:工厂接口 */public interface IFactory {public Operation getOpeartion();}

然后有一个加法工厂,用于创建加法操作类:

package com.DesignPolicyLearn.Factory;/* * author:Tammy Pi * function:加法工厂 */public class AddFactory implements IFactory{@Overridepublic Operation getOpeartion() {return new AddOperation();}}

一个用于测试的类:

package com.DesignPolicyLearn.Factory;/* * author:Tammy Pi * function:用于测试的类 */public class Main {public static void main(String[] args){IFactory factory = new AddFactory();Operation add = factory.getOpeartion();int result = (Integer) add.operation(1,2);System.out.println("result is :"+result);}}

可以看到,工厂类和简单工厂类的区别是,如果是简单工厂模式,应该就是一个Factory,根据用户传入的参数,返回不同的Operation;而工厂模式,则提供的是创建Operation的接口,而将创建神马Operation交给实现类去完成。虽然暂时看不到工厂模式的好处,但存在即是合理的,估计这个模式也有它用的情况吧。