PHP设计模式—外观模式
发布时间:2020-12-13 21:24:21 所属栏目:PHP教程 来源:网络整理
导读:? 定义: 外观模式(Facade): 又叫门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 ? 代码实例: 假设实现一个功能需要用到子系统中的四个方法。 /* * * Class SubSystemOne */ class
? 定义:外观模式(Facade):又叫门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 ?代码实例:假设实现一个功能需要用到子系统中的四个方法。 /** * Class SubSystemOne */ class SubSystemOne { public function methodOne() { return '子系统方法一' . '<br>'; } } * * Class SubSystemTwo SubSystemTwo { methodTwo() { return '子系统方法二' . '<br>'* * Class SubSystemThree SubSystemThree { methodThree() { return '子系统方法三' . '<br>'* * Class SubSystemFour SubSystemFour { methodFour() { return '子系统方法四' . '<br>'; } } 如果不使用外观模式,客户端代码应该为: $subSystemOne = new SubSystemOne(); $subSystemTwo = SubSystemTwo(); $subSystemThree = SubSystemThree(); $subSystemFour = SubSystemFour(); echo $subSystemOne->methodOne(); $subSystemTwo->methodTwo(); $subSystemThree->methodThree(); $subSystemFour->methodFour(); 这样的写法需要客户端了解子系统的具体实现方法,且代码没有解耦,如果子系统发生变化,则所有的客户端调用都需要进行相应的变化。 ? 以下使用外观模式: * * 外观类,整合需要调用的子系统代码,给客户端调用,如果子系统发生变化,只用修改外观类代码 * Class Facade Facade { * * @var */ private $subSystemOne; $subSystemTwo$subSystemThree$subSystemFour* * Facade constructor. __construct() { $this->subSystemOne = SubSystemOne(); $this->subSystemTwo = SubSystemTwo(); $this->subSystemThree = SubSystemThree(); $this->subSystemFour = SubSystemFour(); } * * 整合方法 method() { $this->subSystemOne->methodOne(); $this->subSystemTwo->methodTwo(); $this->subSystemThree->methodThree(); $this->subSystemFour->methodFour(); } } 客户端调用: $facade = Facade(); // 客户端可以不用知道子系统的存在,调用外观类中提供的方法就可以 $facade->method(); 结果: 子系统方法一
子系统方法二
子系统方法三
子系统方法四
?总结:
? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |