使用反射机制完善工厂设计模式。利用反射机制实现创建动态对象。定义水果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