美文网首页
设计模式(三):简单工厂、工厂方法、静态工厂模式

设计模式(三):简单工厂、工厂方法、静态工厂模式

作者: 何笙 | 来源:发表于2019-05-08 15:22 被阅读0次

简单工厂模式(Simple Factory)

不属于23种设计模式之一。
由三个角色组成:

  • 工厂类:生产具体产品
  • 抽象产品
  • 具体产品
image.png

示例代码:

//工厂类
class MouseFactory {
    public static function createMouse($type) {
        switch($type) {
            case 'deil':
                return new DeilMouse();
            case 'hp':
                return new HpMouse();
            default:
                throw new Exception('error type');
        }
    }
}
//抽象产品
abstract class Mouse {
    public abstract function click() {};
}
//具体产品
class DeilMouse extends Mouse {
     public function click() {
     }
}
class HpMouse extends Mouse {
     public function click() {
     }
}

工厂方法模式(Factory Method)

image.png

它由四种角色组成:

  • 抽象工厂
  • 具体工厂
  • 抽象产品
  • 具体产品
//抽象工厂
abstract class MouseFactory{
    public abstract function createMouse();
}
//具体工厂
class DeilFactory extends MouseFactory{
    public function createMouse() {
         return new DeilMouse();
    }
}
class HpFactory extends MouseFactory{
    public function createMouse(){
         return new HpMouse();
    }
}

工厂方法模式是完全符合开闭原则的。当有新产品时,只要创建并继承抽象产品;新建具体工厂继承抽象工厂;而不用修改现有任何代码。
缺点是当产品种类非常多时,就会出现大量的与之对应的工厂类。

抽象工厂(Abstract Factory)

抽象工厂模式也就是不仅生产鼠标,同时生产键盘。
也就是PC厂商是个父类,有生产鼠标,生产键盘两个接口。

image.png

在抽象工厂模式中,假设我们需要增加一个工厂

在抽象工厂模式中,假设我们需要增加一个产品

image.png

由上图可以看出,抽象工厂模式是不符合开闭原则的,产品族扩展非常困难,要增加一个产品,既要在抽象工厂里加代码,又要在具体工厂里面加代码。

相关文章

  • 安卓设计模式-简单工厂模式

    安卓设计模式-简单工厂模式 是什么 简单工厂模式又称为静态方法模式(因为工厂类中定义了一个静态方法),简单工厂模式...

  • 2016.06笔记

    iOS设计模式之工厂模式(简单工厂,工厂方法,抽象工厂) 简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接...

  • 设计模式 工厂模式

    工厂模式 工厂模式三大类1、简单工厂模式(静态工厂方法模式)2、工厂方法模式3、抽象工厂模式(Kit模式) 简单工...

  • 工厂模式

    工厂模式 工厂模式分为 简单(静态)工厂 工厂方法 抽象工厂 下面分别介绍这几总工厂模式 简单工厂 (静态工厂) ...

  • 设计模式之工厂模式

    设计模式之工厂模式 1. 简单工厂模式 1.1 模式定义 简单工厂模式又称为静态工厂方法,它属于创建型模式。在简单...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

  • 大话设计模式之_工厂模式

    大话设计模式之_工厂模式 工程方法(即简单工厂模式simpleFactory,或静态工厂方法 static fac...

  • 设计模式系列-简单工厂模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 简单工厂模式 定义 简单工厂模式又叫做静态工厂方法模式...

  • 设计模式-创建型模式-工厂模式(工厂三兄弟)

    设计模式-创建型模式-工厂模式(工厂三兄弟)工厂模式分为简单工厂,工厂方法,抽象工厂。 简单工厂模式 一个接口,三...

网友评论

      本文标题:设计模式(三):简单工厂、工厂方法、静态工厂模式

      本文链接:https://www.haomeiwen.com/subject/fhkyoqtx.html