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

本文探讨了工厂方法模式的一种改进方法,利用Java反射机制,避免了为新产品创建新的工厂实现类。通过传入产品类如Apple.class,客户端可以直接调用,实现更灵活的产品创建。
 

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值