zoukankan      html  css  js  c++  java
  • 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();
    }
    }

    测试结果:

  • 相关阅读:
    第一周实习工作总结
    service---七月十九号实验
    安卓常用链接
    Activity + 基础UI
    七月十四日安卓学习笔记
    安卓组件学习笔记
    剑指:数组中出现次数超过一半的数字
    剑指:二叉搜索树与双向链表
    剑指:二叉树中和为某一值的路径
    剑指:二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/GGboy-wu/p/9636990.html
Copyright © 2011-2022 走看看