您的位置:首页 > 编程语言 > Java开发

java中的设计模式(二)--工厂方法模式 反射机制

2011-10-17 13:50 393 查看
 
上一次提到了工厂方法模式,经过查阅相关资料,发现可以有改进之处:

改进1.工厂方法

package com.sf.hf;

import com.sf.entity.Apple;
import com.sf.entity.Banana;
import com.sf.jk.Fruit;

public class FruitFactory {
public class FruitFactory {
public static Fruit createFruit(Class c){
//定义一个水果对象
Fruit fruit = null;
try {
fruit = (Fruit) Class.forName(c.getName()).newInstance();
} catch (Exception e) {
System.out.println("创建出错");
}
return fruit;
}
}

}


改进2.客户端调用

import com.sf.entity.Apple;
import com.sf.entity.Banana;
import com.sf.hf.FruitFactory;
import com.sf.jk.Fruit;

public class Test {

public static void main(String[] args) {
System.out.println("---------创建苹果---------");
Fruit apple = FruitFactory.createFruit(Apple.class);
apple.eat();
apple.plant();
System.out.println("---------创建香蕉---------");
Fruit banana = FruitFactory.createFruit(Banana.class);
banana.eat();
banana.plant();
}
}


运行结果:

---------创建苹果---------
生产水果
苹果可以吃
苹果可以种
---------创建香蕉---------
生产香蕉
香蕉可以吃
香蕉可以种


上一次提到的工厂方法是将工厂抽象成一个方法,具体生产产品的方法教给其子类或者实现该接口的子类,

这里用了反射机制省去了具体的工厂实现类,当需要扩展产品的时候,只要传入不同的产品类即可。

客户端调用的时候只需要将产品类传入即可,如 Apple.class
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息