Java工厂方法模式和简单工厂模式一样,是工厂模式的一种,今天,思博就来为大家详细介绍一下Java工厂方法模式。
从定义上看,Java工厂方法模式(Factory Method),又称工厂模式、多态工厂模式和虚拟构造器模式,工厂方法模式把具体产品的创建推迟到工厂类的子类(具体工厂)中,此时工厂类不再负责所有产品的创建,而只是给出具体工厂必须实现的接口,这样工厂方法模式在添加新产品的时候就不修改工厂类逻辑而是添加新的工厂子类,符合开放封闭原则,克服了简单工厂模式中缺点。
从以上的内容,我们不难看出工厂方法模式可以说是简单工厂模式的进一步抽象和拓展,在保留了简单工厂的封装优点的同时,让扩展变得简单,让继承变得可行,增加了多态性的体现。它更符合开-闭原则,新增一种产品时,只需要增加相应的具体产品类和相应的工厂子类即可。
工厂方法模式有四个角色,分别是抽象工厂模式,具体工厂模式,抽象产品模式,具体产品模式。
抽象工厂角色(Creator),它是工厂方法模式的核心,任何创建对象的工厂都必须实现这个接口;
具体工厂角色(ConcreteCreator)实现了抽象工厂,用具具体产品的创建;
抽象产品角色(Product)指的是工厂方法模式所创建对象的超类型即子类产品的公共父类;
具体产品角色(ConcreteProduct)有具体工厂所创建的每一个子类。
工厂方法模式一共有5个使用步骤:
1)先是创建抽象工厂类,定义具体工厂的公共接口;
2)然后创建抽象产品类 ,定义具体产品的公共接口;
3)接着创建具体产品类(继承抽象产品类) & 定义生产的具体产品;
4)再接着创建具体工厂类(继承抽象工厂类),定义创建对应具体产品实例的方法;
5)最后外界通过调用具体工厂类的方法,从而创建不同具体产品类的实例。
那么我们在什么场景或者什么情况下比较适合使用工厂方法模式呢?思博给大家介绍几个。当一个类不知道它所需要的对象的类时,我们可以使用工厂方法模式。因为在工厂方法模式中,客户端不需要知道具体产品类的类名,只需要知道所对应的工厂即可。另外当一个类希望通过其子类来指定创建对象时,我们也可以使用这个模式。
即刻预约
免费试听-咨询课程-获取免费资料