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

    测试结果:

  • 相关阅读:
    日期类的时间从为什么是从1970年1月1日(格林威治时间)
    网站缓存技术总结( ehcache、memcache、redis对比)
    干货|java缓存技术详解
    TCP和UDP的区别(转)
    form表单转换为Json字符串数据
    JSON.parse 和 JSON.stringify
    Navicat连接Oracle的几个问题及解决方案
    Python IO编程
    python阶段总结一
    使用git进行版本控制
  • 原文地址:https://www.cnblogs.com/GGboy-wu/p/9636990.html
Copyright © 2011-2022 走看看