使用反射机制完善工厂设计模式。利用反射机制实现创建动态对象

使用反射机制完善工厂设计模式。利用反射机制实现创建动态对象。定义水果Fruit类,属性:brand(String)、unitPrice(double)、account(double),构造方法、getTotalPrice()计算水果的价格、覆写toString()方法获得水果的基本信息。创建三种水果类,Apple、Pear、Oranges,继承自Fruit类。再定义一个Factory类,实现动态创建对象,要求使用反射机制创建某种水果,在客户端输出相应的水果信息。模拟实现购物车,计算并输出购买的多种水果的信息以及总价格。


/**
 * 创建水果类接口
 * 
 * @author 76519
 *
 */
interface IFruit {
	public void eat();
}
 
class Cherry implements IFruit {
	@Override
	public void eat() {
		System.out.println("吃樱桃....");
	}
}
 
class Apple implements IFruit {
	@Override
	public void eat() {
		System.out.println("吃苹果....");
	}
}
 
/**
 * 创建另外的一个 接口 (父类)
 * 
 * @author 76519
 *
 */
interface IMessage {
	public void print();
}
 
// 创建消息父类的子类对象
class MessageImpl implements IMessage {
	@Override
	public void print() {
		System.out.println("打印信息.....");
	}
}
 
class Factory {
	// 私有化构造方法 使其不能  实例化
	private Factory() {}
 
	/**
	 * 创建实例化      工厂方式   ----   泛型模式    
	 * @param className   接收的类名称(全路径)
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T getInstance(String className) {
		T t = null;
		try {
			t = (T) Class.forName(className).newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return t;
	}
}
 
/**
 * 一般模式下的工厂设计模式
 * @author 76519
 *
 */
public class TestDemo2 {
	public static void main(String[] args) {
		// 多态模式 接收数据
		IFruit iFruit = Factory.getInstance("refelect.factory.wonderfull.Cherry");
		iFruit.eat();
		
		// 多态模式   接收消息类
		IMessage iMessage = Factory.getInstance("refelect.factory.wonderfull.MessageImpl");
		iMessage.print();
	}

}

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632

https://blog.csdn.net/qq_37949192/article/details/116993087