博客
关于我
1. 简单工厂模式
阅读量:637 次
发布时间:2019-03-14

本文共 2282 字,大约阅读时间需要 7 分钟。

简单工厂模式是一种设计模式,其核心思想是通过引入一个工厂类,让用户在使用对象时无需关心对象的具体创建细节,从而降低系统的耦合度,提高设计的可维护性和扩展性。

1. 简单工厂模式的定义

简单工厂模式(Static Factory Pattern)通过定义一个工厂类,根据传入的参数返回不同类的实例。这些实例通常都具有相同的父类。工厂类通常提供静态方法,这种模式也被称为静态工厂方法模式。它是一种创建型模式,主要用于将对象的创建过程与使用过程分离开来。

2. 工厂模式的角色

工厂模式的核心是工厂类的设计,通常包括以下三个角色:

  • 工厂角色(Factory)

    • 负责创建所有产品实例的内部逻辑。
    • 可以被外界直接调用,创建所需的产品对象。
    • 提供静态的工厂方法factoryMethod(),返回类型为Product的抽象产品类型。
  • 抽象产品角色(Abstract Product)

    • 是工厂类创建的所有对象的父类,封装了不同产品的共有方法。
    • 提供一个统一的接口,所有具体产品角色都需要实现它的方法。
  • 具体产品角色(Concrete Product)

    • 是最终的创建目标,继承自抽象产品角色。
    • 实现了抽象产品中声明的抽象方法,提供具体的产品功能。
  • 3. 工厂模式的实现

    简单工厂模式的实现通常包括以下几个部分:

  • 抽象产品类
  • public abstract class Product {    public void methodSame() {        // 公共方法的实现    }    public abstract void methodDiff(); // 抽象业务方法}
    1. 具体产品类A
    2. public class ConcreteProductA extends Product {    @Override    public void methodDiff() {        // 业务方法的实现    }}
      1. 具体产品类B
      2. public class ConcreteProductB extends Product {    @Override    public void methodDiff() {        // 业务方法的实现    }}
        1. 工厂类
        2. public class Factory {    public static Product getProduct(String type) {        Product product = null;        if (type.equals("A")) {            product = new ConcreteProductA();        } else if (type.equals("B")) {            product = new ConcreteProductB();        }        return product;    }}
          1. 客户端调用
          2. public class Client {    public static void main(String[] args) {        Product product = Factory.getProduct("A");        product.methodSame();        product.methodDiff();    }}

            4. 对象创建的几种方法

            在简单工厂模式中,对象的创建可以通过以下几种方式:

          3. 直接使用new关键字

            Object obj = new Object();

            优点:简单易行,缺点:难以扩展,需要修改源代码。

          4. 通过反射机制创建

            Object obj = (Object) Class.forName("com.example.MyClass").newInstance();

            优点:支持动态加载类,缺点:性能较差,且不符合Java的最佳实践。

          5. 通过克隆方法创建

            Object obj = objToClone.clone();

            优点:保留了对象的唯一性,缺点:需要实现clone()方法。

          6. 通过工厂类创建

            Product product = Factory.getProduct("A");

            优点:实现了对象创建与使用的分离,易于管理,适合多种产品类型,减少了类之间的耦合,支持动态配置(如通过配置文件)。

          7. 5. 工厂模式的优缺点

            简单工厂模式的使用具有以下优点:

          8. 实现对象创建与使用的分离:用户只需要关注对象的使用,不需要知道其创建过程。
          9. 对用户友好:用户只需传入参数,工厂自动返回正确的对象实例。
          10. 支持动态配置:可以通过配置文件或其他外部机制动态改变产品类的选择,减少代码修改。
          11. 其缺点包括:

          12. 工厂类职责过重:一旦工厂类出现故障或不能正常工作,整个系统都会受到影响。
          13. 增加类的复杂度:引入工厂类和抽象产品类会增加系统的类数量,增加维护成本。
          14. 不利于快速添加新产品:要添加新产品类型,需要修改工厂类的逻辑,降低了扩展性。
          15. 静态工厂方法的局限性:静态工厂方法无法形成基于继承的等级结构,限制了系统的灵活性。
          16. 6. 工厂模式的适用场景

            简单工厂模式适用于以下场景:

          17. 对象创建较少:系统中创建对象的频率较低。
          18. 客户端只了解参数,不关心具体实现:客户端只需要知道传入工厂类的参数,工厂自动返回相应的对象实例。
          19. 通过以上分析,可以清晰地看到简单工厂模式在设计模式中的重要作用,以及它在实际开发中的应用场景。

    转载地址:http://yzmoz.baihongyu.com/

    你可能感兴趣的文章
    Python在def函数中使用for循环
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>
    python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
    查看>>
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    Python和RF编写web自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>
    python和java哪个更值得学——来自知乎高赞回答
    查看>>
    python和c混合编程 github_在pycharm中使用git版本管理以及同步github的方法
    查看>>
    python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
    查看>>
    Python命名中尾随下划线有什么好处?
    查看>>
    Python启动脚本
    查看>>