【重温设计模式】之002简单工厂模式

【重温设计模式系列源码】

简单工厂模式

基本原理

含义

简单工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法)。
在现实生活中,工厂是生产产品的,
同样的,在设计模式中,一个负责生产“对象”产品的类就是工厂类。

解决的问题

将 “类实例化的操作” 和 “使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类。

言外意:

将 铅笔的生产 和 使用铅笔 分开, 使用者只关注如何使用铅笔,而并不关注铅笔是如何生产的。

即使用者可直接消费产品而不需要知道其生产的细节。

组成部分

组成 关系 作用
产品标准 具体产品的父类 描述产品的公共接口
具体产品 产品标准的具体实现类 描述生产的具体产品
工厂类 被外界调用 根据传入的不同参数而创建不同具体产品类的实例

UML类图

使用步骤

  1. 创建产品标准 (描述产品的公共接口)
  2. 创建具体产品类 (描述生产的具体产品)
  3. 创建工厂类(通过创建静态方法根据传入不同参数从而创建不同具体产品类的实例)
  4. 外界通过调用工厂类的静态方法,根据传入不同参数从而创建不同具体产品类的实例

优点

将 创建产品的工作 与 使用产品的工作 分离开来,实现了解耦。
将 初始化实例的工作 放在了工厂类进行,容易进行维护。
面向接口编程,而不是面向对象。

缺点

工厂类集中了所有实例(产品)的创建逻辑,一旦工厂类不能正常工作,整个系统都将受到影响。
一旦增加新的产品,就不得不修改工厂类的逻辑,违背了“开闭原则”。

适用场景

  • 当使用者只知道传入的参数,而不关心对象的创建细节时。
  • 当工厂类负责创建的对象(产品)比较少时。

总结

尽信书不如无书,任何脱离实际业务的架构都是在耍流氓;
所谓原则,只是为了更好地为我们服务;
具体如何应用需要我们在业务实践中灵活把控。

(0)

相关推荐

  • 设计模式(一)——Java单例模式(代码+源码分析)

    设计模式(一)——Java单例模式(代码+源码分析)

  • 设计模式(2) 单例模式

    单例模式 线程安全的Singleton 会破坏Singleton的情况 线程级Singleton 单例模式是几个创建型模式中最独立的一个,它的主要目标不是根据客户程序调用生成一个新的实例,而是控制某个 ...

  • 【C++设计模式二】C++工厂模式

    (1)定义 简单工厂模式中,每新增一个具体产品,就需要修改工厂类内部的判断逻辑.为了不修改工厂类,遵循开闭原则,工厂方法模式中不再使用工厂类统一创建所有的具体产品,而是针对不同的产品设计了不同的工厂, ...

  • 设计模式——把类作为参数的抽象工厂模式

    今天给大家介绍一个非常简单的设计模式,一学就会,非常好用. 这个模式叫做抽象工厂模式,大家可能对工厂模式比较熟悉,在工厂模式当中封装了实例的创建逻辑.主要的用途一般是将一些复杂的类的创建过程整合在一起 ...

  • 【C++设计模式一】C++简单工厂模式

    (1)定义 定义一个简单工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类. (2)结构 简单工厂模式有以下的结构: 工厂(Factory):根据客户提供的具体产品类的参数 ...

  • 创建型设计模式总结

    Intro 前面几篇文章已经把创建型设计模式都介绍了,来做一个简单的总结. 创建型设计模式,就是用来创建对象的设计模式,根据要创建的对象的复杂度以及是否允许多实例以及是否需要容易扩展等多方面考虑去选择 ...

  • 设计模式学习笔记 ———— 简单工厂模式

    # 背景 简单工厂模式是很多程序员学习的第一个设计模式,因为其不但原理简单而且易于上手,在日常工作的代码中也常有体现.今天分享一个基于实现"加"."减".&qu ...

  • PHP设计模式之简单工厂模式

    PHP设计模式之简单工厂模式 先从简单工厂入门,不管是面试还是被他人面试,在问到设计模式的时候,大多数人都会提到工厂模式.毫无疑问,工厂相关的几种模式在设计模式中是最出名的也是应用比较广泛的一种模式. ...

  • [PHP小课堂]PHP设计模式之简单工厂模式

    PHP设计模式之工厂方法模式 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[DarkMatterZyCoder/149844827]免费得PHP.项目管理学习资料

  • 【设计模式】简单工厂模式

    定义 通过工厂类提供的方法,创建不同的派生类 通常创建的类都具有共同的基类/接口 优缺点 优点 客户端与具体的实现类解耦 缺点 新增产品需要修改原来工厂类的方法,不符合开闭原则 角色 客户端 --&g ...

  • PHP设计模式—工厂模式之简单工厂模式

    定义: 简单工厂模式:将调用者和创建者分离,实现解耦,调用者直接向工厂请求,通过工厂去选择需要实例化的对象,用一个单独的类来做这个创建实例的过程. 代码实例: 问题:假设一个关于个人事务管理的项目中有 ...

  • 深入学习《大话设计模式》 简单工厂模式

    简单工厂模式 定义:封装改变,既然要封装改变,自然也就要找到需要更改的代码,然后将需要更改的代码用类来封装,这样的思路就是我们简单工厂模式的实现方式了 下面我们通过一则小故事来简述一下我们在项目中为什 ...

  • 大话设计模式笔记(一)の简单工厂模式

    概要 一个好的程序猿/媛敲出来的代码应该是可维护.可复用.可扩展的,也就是具有较好的灵活性. 为了达到以上目的,在还没敲代码之前,需要事先考虑通过何种方式能够使自己的程序的耦合度降低,最基本的便是面向 ...

  • 【6/25】使用简单工厂模式(Simple Factory Pattern)改写Page基类

    这是<小游戏从0到1设计模式重构>系列内容第6篇,所有源码及资料在"程序员LIYI"公号回复"小游戏从0到1"获取. 工厂模式有三个姐妹:简单工厂模 ...