博客
关于我
设计模式(二)—工厂模式(简单工厂模式)(附代码)
阅读量:276 次
发布时间:2019-03-01

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

工厂模式

工厂模式是一种最常用的设计模式,属于创建型模式,用于提供创建对象的最佳方式。这种模式的核心思想是通过一个共同的接口来创建对象,从而隐藏了创建逻辑,避免了对客户端的暴露。

在工厂模式中,对象的创建是通过工厂类完成的。工厂类通常实现一个工厂方法,这个方法返回一个新创建的对象。这种方式让客户端只需要调用工厂方法即可获得所需对象,而无需直接关心对象的创建细节。

工厂模式的特点

  • 创建对象的统一入口:工厂类提供一个统一的方法(如getObject()),客户端只需要调用这个方法即可获得所需对象。
  • 遮蔽创建逻辑:客户端无法直接看到对象是如何被创建的,所有的创建逻辑都在工厂类内部。
  • 灵活性和可扩展性:当需要新增对象类型时,只需在工厂类中添加对应的创建逻辑,无需修改客户端代码。
  • 工厂模式的应用场景

    • 当需要创建多种不同类型的对象时,工厂模式非常有用。
    • 当对象的创建逻辑复杂或需要多种情况处理时,工厂模式可以简化客户端代码。
    • 当对象的创建需要遵循某种规则或条件时,工厂模式可以方便地处理这些逻辑。

    工厂模式的实现

    工厂模式通常分为简单工厂抽象工厂两种类型。

  • 简单工厂

    • 简单工厂是一个具体的工厂类,实现了所有可能的对象创建逻辑。
    • 例如:
      public class SimpleFactory {
      public Animal createAnimal(String type) {
      if (type.equals("dog")) {
      return new Dog();
      } else if (type.equals("cat")) {
      return new Cat();
      } else {
      throw new IllegalArgumentException("Invalid animal type");
      }
      }
      }
  • 抽象工厂

    • 抽象工厂是一个抽象类,包含多个工厂方法,每个方法返回一个具体的工厂。
    • 例如:
      public abstract class AbstractFactory {
      public abstract Animal createAnimal(String type);
      }
      public class DogFactory extends AbstractFactory {
      @Override
      public Animal createAnimal(String type) {
      return new Dog();
      }
      }
  • 工厂模式的优点

  • 客户端代码简洁:客户端只需要调用的工厂方法即可获得所需对象,无需关心对象的创建过程。
  • 遮蔽复杂性:工厂类可以处理复杂的对象创建逻辑,客户端无需了解具体实现。
  • 容易扩展:新增对象类型时,只需在工厂类中添加对应的创建逻辑,无需修改客户端代码。
  • 工厂模式的缺点

  • 性能问题:在频繁创建对象的情况下,工厂模式可能带来一定的性能 overhead。
  • 工厂类复杂度:当对象类型越来越多时,工厂类可能变得非常复杂。
  • 工厂模式与其他创建模式的比较

    • 单例模式:用于确保只有一个实例被创建,并且在多次请求时返回同一个实例。
    • 原型模式:用于创建对象的克隆,通过复制现有对象来减少资源消耗。
    • 建造器模式:与工厂模式类似,但更强调逐步构造对象,提供更大的控制权。

    工厂模式在大多数应用场景中都是最优选择,尤其是在需要创建多种不同类型的对象时。

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

    你可能感兴趣的文章
    nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
    查看>>
    Nginx + Spring Boot 实现负载均衡
    查看>>
    Nginx + uWSGI + Flask + Vhost
    查看>>
    Nginx - Header详解
    查看>>
    Nginx Location配置总结
    查看>>
    Nginx upstream性能优化
    查看>>
    Nginx 中解决跨域问题
    查看>>
    Nginx 动静分离与负载均衡的实现
    查看>>
    Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
    查看>>
    Nginx 反向代理解决跨域问题
    查看>>
    Nginx 反向代理配置去除前缀
    查看>>
    nginx 后端获取真实ip
    查看>>
    Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
    查看>>
    nginx 常用配置记录
    查看>>
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 的 proxy_pass 使用简介
    查看>>
    Nginx 的配置文件中的 keepalive 介绍
    查看>>
    Nginx 负载均衡详解
    查看>>
    nginx 配置 单页面应用的解决方案
    查看>>
    nginx 配置~~~本身就是一个静态资源的服务器
    查看>>