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

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

2013-09-13 11:45 155 查看
上一次提到了工厂方法模式,经过查阅相关资料,发现可以有改进之处:

改进1.工厂方法

[html] view
plaincopy

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.客户端调用

[html] view
plaincopy

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();

}

}

运行结果:

[html] view
plaincopy

---------创建苹果---------

生产水果

苹果可以吃

苹果可以种

---------创建香蕉---------

生产香蕉

香蕉可以吃

香蕉可以种

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

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

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