java 工厂化生产

工厂化生产:定义一个用于创建对象的接口,让子类决定实例化哪个类
举个栗子:

首先是接口:
ICar接口:
public interface ICar {
public String getName();
}


其次是实体类(继承了接口):
QQ:
public class QQ implements ICar {
@Override
public String getName() {
System.out.println("this is QQ===");
return null;
}
}

BMW:
public class BMW implements ICar {
@Override
public String getName() {
System.out.println("this is BMW===");
return null;
}
}


然后是工厂类Factory:
import static javafx.scene.input.KeyCode.T;

public class Factory {

public static ICar getInstance(String name){

// //第一种(入门)
// //工厂里面定死只有 指定的类 :“BMW”&“QQ”
// if("BMW".equals(name)){
// return new BMW();
// }else if("QQ".equals(name)){
// return new QQ();
// }
// return new BMW();

//第二种
//工厂里面可以生产 指定类型 的接口
ICar iCar=null;
try {
Class clazz =Class.forName(name);
iCar=(ICar) clazz.newInstance();
} catch (Exception e){
e.getStackTrace();
}
return iCar;

}

//第三种
//可以针对任何实体类
public static <T> T getInstances(String name,Class<T> clazz){
T t = null;
try {
t=(T)Class.forName(name).newInstance();
return t;
}catch (Exception ex){
ex.printStackTrace();
}
return t;
}
}


最后是测试类FactoryTest:
public class FactoryTest {
public static void main(String[] args){
// ICar iCar=Factory.getInstance("QQ");
// iCar.getName();

ICar iCar=Factory.getInstance("com.wzy.interview.Factory.QQ");
iCar.getName();

ICar iCar1=Factory.getInstances("com.wzy.interview.Factory.BMW",BMW.class);
iCar1.getName();
}
}

测试结果:

 

转载于:https://www.cnblogs.com/GGboy-wu/p/9636990.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值