喜迎
春节

设计模式——简单工厂方法模式


说明

凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。
就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:

示例

下面讲解下静态工厂方法模式的代码实现

  1. 创建公共接口
    1
    2
    3
    interface Sender{
    public function send();
    }
  2. 创建实现类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class MailSender implements Sender{
    public function send(){
    print "mail send";
    }
    }

    class SmsSender implements Sender{
    public function send(){
    print "sms send";
    }
    }
  3. 创建工厂类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class SendFactory{
    public static function produceMail(): Sender{
    return new MailSender();
    }

    public static function produceSms(): Sender{
    return new SmsSender();
    }
    }
  • 我们来测试下:

    1
    2
    3
    4
    5
    6
    class FactoryTest{
    public static function index(){
    $sender = SendFactory::produceSms();
    $sender->send();
    }
    }
  • 输出结果为:

    1
    sms send

总结

缺陷:类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。


文章作者: Crazy Boy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Crazy Boy !
评 论
 上一篇
设计模式——策略模式
设计模式——策略模式
说明示例下面看下策略模式的代码实现 12345678910111213141516171819202122232425262728293031323334353637383940interface ICalculator{ publi
2022-05-19
下一篇 
设计模式——组合模式
设计模式——组合模式
说明 又叫部分-整体模式,在处理类似树形结构的问题时比较方便。 示例下面看下组合模式的代码实现 12345678910111213141516171819202122232425262728293031323334353637383940
2022-05-19
  目录
hexo