在说工厂方法模式之前,先了解一下简单工厂模式。工厂方法模式其实是在简单工厂上面做了一些增强。 简单工厂模式:有一个专门的类来生产其他类的实例,生产的这些实例有一个共同父类。这个跟我们的多态有一点像。 例子: 假如我们有一个鼠标工厂,这个工厂既可以生产联想鼠标,又可以生产宏碁鼠标。 代码 ...
有了简单工厂模式,为什么还需要工厂方法模式 简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。如果简单工厂模式需要改动,比如新增加一个运算,那么我们一定要给运算工厂类的方法里面加 Case 的分支条件的,修改原来的类。这样我们不但对扩展开放了,对修改也开放了,违背了开发 封闭原则的。 什么是工厂方法模式 定义一个 ...
2018-09-05 10:23 0 854 推荐指数:
在说工厂方法模式之前,先了解一下简单工厂模式。工厂方法模式其实是在简单工厂上面做了一些增强。 简单工厂模式:有一个专门的类来生产其他类的实例,生产的这些实例有一个共同父类。这个跟我们的多态有一点像。 例子: 假如我们有一个鼠标工厂,这个工厂既可以生产联想鼠标,又可以生产宏碁鼠标。 代码 ...
在继上次单例模式后,有些朋友建议我写点文字还是比较好,于是我吸取教训,哼!决定以后都只贴代码了......哈哈,跟大家开个玩笑。好了,废话不多说,直接开启我们今天的设计模式吧! 在进入正题前,我先跟大家说一个OO设计中非常非常重要的原则:开放关闭原则。“开放关闭”是什么 ...
1.工厂方法模式定义 2.通用实现方式 工厂方式通用实现方式类图如下: 其中Product定义了产品的共性,是对事物的抽象,Creator为抽象创建类,即抽象工厂,具体如何创建实例由实现类决定。代码如下所示: Product类: Creator类: 具体的实现类 ...
之前写了 设计模式系列目录 今天说一下工厂方法模式: 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类 所谓的决定并不是批模式允许子类本身在运行时做决定,而是指在编写创建者类时,不需知道创建的产品是哪一下,选择了使用 哪个子类,就决定了实际创建 ...
简介 根据《head first 设计模式》所述,工厂模式共有三种:简单/静态工厂、工厂方法和抽象工厂。 注:其实静态工厂不是一个设计模式,它更像是一种编程习惯。但是这里是根据[1]所做的笔记,为了方便管理区分,假称它是工厂模式的一种。 本文介绍静态工厂方法。 1、定义:利用静态方法 ...
使用频率:★★★★★ 一、什么是工厂方法 具体的工厂对象负责生产具体的产品对象; 二、补充说明 符合开放--封闭"原则(OCP),新增产品时,只需新增工厂的实现类、产品的实现类,不修改原来的代码; 属于23种GOF设计模式中的一种; 三、角色 抽象工厂 具体工厂 抽象 ...
目录 1. 简介 2. 示例1-计算器重构 2.1 背景说明 2.2 代码重构 2.3 程序类图 3. 示例2-模拟多功能日记记 ...
工厂模式属于创建型设计模式,它提供了一种创建对象的最佳方式。 定义:定义了一个创建产品对象的工厂接口,将实际创建工作推迟到子类工厂当中。 问题描述:简单工厂模式中,只要添加新的产品类,就得去修改工厂类,这样做势必违反了开闭原则。 解决方案:新增抽象工厂类,让抽象产品对应抽象 ...