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

    测试结果:

  • 相关阅读:
    C#常用功能和通用模块开发资料
    常用工具&网址
    Web前端开发、常见问题及解决方法
    MQTT专题(Spring boot + maven整合MQTT、EMQ搭建MQTT服务器和客户端模拟工具)
    Spring常用注解
    ActiveMQ专题(服务器搭建、配置和项目应用)
    HTTP RESTful服务开发 spring boot+Maven +Swagger
    设计模式-命令模式
    设计模式-责任链模式
    设计模式—建造者模式(Builder)
  • 原文地址:https://www.cnblogs.com/GGboy-wu/p/9636990.html
Copyright © 2011-2022 走看看