工厂方法模式

一、概念

        工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

二、UML类图

三、基本代码实现

1、 Product 接口,定义所创建对象的接口

public interface Product {

}

2、 ConcreteProduct1 ,具体的产品,实现了Product接口

public class ConcreteProduct1 implements Product{

}

3、声明工厂方法,该方法返回一个 Product类型的对象

public interface Creator {

        Product factoryMethod();

}

4、 Product1Creator ,重定义工厂方法以返回一个 ConcreteProduct实例

public class Product1Creator implements Creator{

        public Product factoryMethod(){

                  return new ConcreteProduct1();

        }

}

5、测试类

public class Main {

        public static void main(String[] args) {

                Creator creator = new Product1Creator();

                Product product = creator.factoryMethod();

        }

}

四、总结

        工厂方法模式由简单工厂演变而来。简单工厂模式最大的优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关类,对于客户端来说,去除了具体的产品依赖。但是,如果增加一个新的产品对象,就需要在工厂类的条件分支语句中增加新的case或者if语句来实现产生新的对象实例。这个不符合开放-封闭原则(对扩展开放,对修改封闭)。

        工厂方法模式把工厂类抽象出一个接口,这个接口只有一个方法,就是创建抽象产品对象的方法。所有要生产具体产品类的工厂,就去实现这个接口。这样一个简单工厂模式的工厂类,变成了一个抽象工厂接口和多个具体生成对象的工厂。

        有一点,工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现产品对象的创建,选择判断的问题还是存在的,也就是说,工厂方法将简单工厂的内部逻辑判断移到了客户端代码来进行。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容