本文共 1510 字,大约阅读时间需要 5 分钟。
工厂方法模式(Factory Method Pattern)是一种软件设计模式,旨在解决简单工厂模式违背开闭原则的问题。这一模式通过对简单工厂模式的抽象化,使得系统在不修改原来代码的情况下引入新的产品类型,得以更好地遵循开闭原则。
其优点体现在对简单工厂模式的扩展和优化上:新增产品类型时,只需增加对应的工厂类,无须修改现有工厂代码,实现了高度的灵活性和可维护性。此外,这一模式还符合高内聚低耦合的设计理念,减少了类与类之间的相互耦合程度。
然而,该模式也存在一些潜在缺陷:类的数量可能变得过多,增加了代码的复杂度,同时该模式仅适用于生产单一类型的产品,无法像简单工厂模式那样支持多个产品类型的批量生产。
工厂方法模式在以下场景下表现出色:
工厂方法模式主要涉及三个核心角色:
抽象产品(Abstract Product):定义产品的基本行为和属性,通常由接口或抽象类实现。
具体产品(Concrete Product):实现了抽象产品中定义的具体行为和属性,通常为实际产品类别的代表。
抽象工厂(Abstract Factory):定义一个工厂接口或抽象类,其方法用于获取产品的具体实现类。以下是其常见的接口定义示例:
public interface FactoryMethod { /** 获取职业 */ Profession getProfession();}
对应的具体实现类样例如下:
public class DeveloperFactory implements FactoryMethod { @Override public Profession getProfession() { return new Developer(); }}public class TesterFactory implements FactoryMethod { @Override public Profession getProfession() { return new Tester(); }}
以下是一个典型的工厂方法模式测试代码实现:
public class FactoryMethodMain { public static void main(String[] args) { // 创建并获取开发人员职业信息 Profession developer = new DeveloperFactory().getProfession(); System.out.println(developer.outDesc()); // 创建并获取测试员职业信息 Profession tester = new TesterFactory().getProfession(); System.out.println(Tester.outDesc()); }}
这种设计理念使得系统能够灵活扩展产品类型,同时保持代码的高可维护性和低耦合性。工厂方法模式通过引入抽象工厂概念,不仅提高了系统的扩展性,也为后续的mpp(Model-View-Presenter)模式等框架奠定了基础,是软件开发中一个非常重要的设计技巧。
转载地址:http://yvviz.baihongyu.com/