工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
意图
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
主要解决
主要解决接口选择的问题。
何时使用
我们明确地计划不同条件下创建不同实例时。
如何解决
让其子类实现工厂接口,返回的也是一个抽象的产品。
关键代码
创建过程在其子类执行。
与简单工厂的不同之处
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖
工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑移到了客户端代码来进行。你想要加功能,本来是该工厂类,而现在修改客户端!
示例
使用工厂方法做一个计算器
步骤1 创建一个接口
步骤2 实现该接口的实体类
步骤3 创建抽象类来获取工厂
步骤4 创建扩展了 IFactory 的工厂类,生成实体类的对象。
步骤5 使用实际工厂