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

本文共 1467 字,大约阅读时间需要 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 常用配置记录
    查看>>
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 的 proxy_pass 使用简介
    查看>>
    Nginx 的配置文件中的 keepalive 介绍
    查看>>
    nginx 配置 单页面应用的解决方案
    查看>>
    nginx 配置~~~本身就是一个静态资源的服务器
    查看>>
    Nginx下配置codeigniter框架方法
    查看>>
    nginx添加模块与https支持
    查看>>
    Nginx的Rewrite正则表达式,匹配非某单词
    查看>>
    Nginx的使用总结(一)
    查看>>
    Nginx的是什么?干什么用的?
    查看>>
    Nginx访问控制_登陆权限的控制(http_auth_basic_module)
    查看>>
    nginx负载均衡的五种算法
    查看>>
    Nginx配置ssl实现https
    查看>>
    Nginx配置TCP代理指南
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    Nginx配置参数中文说明
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>
    NIO Selector实现原理
    查看>>
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>