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

 

上一次提到了工厂方法模式,经过查阅相关资料,发现可以有改进之处:

改进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

阅读更多
个人分类: 学习笔记
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭