zoukankan      html  css  js  c++  java
  • 工厂模式--简单工厂模式

    工厂模式用于实现逻辑的封装,并通过公共的接口提供对象的实例化服务,在添加新的类时装修要做少量的修改。

     

    1.简单工厂模式

    通过反射机制进行类注册的简单工厂模式
    • 通过反射机制注册产品类对象和实例化
    • 注册产品对象并向每个产品添加newInstance方法,该方法返回与自身类型相同的新实例
     
    //实例对象父类
    public class Vehicle {
    }
    //vehicle工厂类
    public
    class VehichleFactory { // 用map对象保存产品ID及其对应的分类 private static Map<String, Class> registeredProducts = new HashMap<String, Class>(); // 注册vehicle public void registerVehicle(String type,Class vehicleClass) { registeredProducts.put(type, vehicleClass); } //获取vehicle实列对象 public Vehicle createVehicle(String type) throws InstantiationException, IllegalAccessException { Class vehicleClass = registeredProducts.get(type); return (Vehicle) vehicleClass.newInstance(); } }

    在某些情况下,反射机制并不适用。比如,反射机制需要权限,这在某些特定的环境是无法实现的。反射机制也会降低程序的运行效率,在对性能要求较高的场景下应该避免使用这种机制。

    使用newInstance 方法进行类注册的简单工厂模式

    //在基类中添加一个抽象方法
    public abstract class Vehicle {
        abstract public Vehicle newInstance();
    }
    public class VehichleFactory {
    
        // 用map对象保存产品ID及其对应的分类
        private static Map<String, Vehicle> registeredProducts = new HashMap<String, Vehicle>();
    
        // 注册vehicle
        public void registerVehicle(String type,Vehicle vehicle) {
            registeredProducts.put(type, vehicle);
        }
        
        //获取vehicle实列对象
        public VehichleFactory.Vehicle createVehicle(String type) {
            return registeredProducts.get(type).newInstance();
            
        }
    }
  • 相关阅读:
    天轰穿C#教程之C#基础的学习路线
    天轰穿C#教程之大话C#
    天轰穿C#教程之#pragma介绍[原创]
    天轰穿.NET教程之第一个控制台应用程序
    .NET笔试题整理(转)
    天轰穿.NET教程之基类库
    天轰穿C#教程之C#有哪些特点?
    程序猿!?应该有哪些目标?
    浅谈编程程序员应该具备的职业素养 [转载]
    .NET访问MySQL数据库方法(转)
  • 原文地址:https://www.cnblogs.com/archer-wen/p/11963818.html
Copyright © 2011-2022 走看看