• 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();
    }
    }

    测试结果:

  • 相关阅读:
    二分查找LintcodeNo14
    二次排序LincodeNo.846
    github常用操作
    ubuntu18.04 Testlink安装 配置
    树莓派4B安装ffmpeg
    ubuntu18.04下基于XAMPP的Testlink安装部署
    使用rsync同步服务器和NFS数据
    Pandas Cheat Sheet
    【转】Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)
    gitlab cd ci
  • 原文地址:https://www.cnblogs.com/GGboy-wu/p/9636990.html
Copyright © 2020-2023  润新知