工厂模式--简单工厂模式

Posted archer-wen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工厂模式--简单工厂模式相关的知识,希望对你有一定的参考价值。

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

 

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++工厂模式(简单工厂工厂方法抽象工厂)