您的位置:首页 > 移动开发 > Objective-C

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

2012-08-10 09:08 507 查看
工厂模式是提供了创建了对象的接口,将具体创建什么对象延迟到子类完成。

下面是工厂模式的实例:

有一个操作类的抽象类:

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 {

@Override
public 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{

@Override
public 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交给实现类去完成。虽然暂时看不到工厂模式的好处,但存在即是合理的,估计这个模式也有它用的情况吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息