说明
门面模式又叫外观模式,这个设计模式也比较简单,比较容易理解,其实在我们正常编码中就已经写出了门面模式,但是我们并不知道这个写法是叫门面模式。
门面模式的定义:提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。
简而言之就是请求一个接口 这个接口对应的操作是聚合了多个子系统的操作。这样使得子系统与客户之间是松耦合,更助于对象之间的依赖关系分层。
示例
我想做一个发送通知的操作,那么这个发送其实应该包含发送 短信、socket、推送等,使用者不需要知道这个东西,你只要提供一个门面给他调用即可 就能完成他想要的效果
<?php /** * Created by 憧憬. */ interface Message { public function send($user); } /** * 消息门面 * Class MessageFacade */ class MessageFacade { public $sms; public $socket; public $pusher; public function __construct() { $this->sms = new Sms(); $this->socket = new Socket(); $this->pusher = new Pusher(); } /** * 发送消息 * @param $user * @author: 憧憬 */ public function send($user) { $this->sms->send($user); $this->socket->send($user); $this->pusher->send($user); } } /** * 发送短信 * Class Sms */ class Sms implements Message { public function send($user) { echo '发送短信给'. $user; } } /** * 推送socket * Class Socket */ class Socket implements Message { public function send($user) { echo '发送socket给'. $user; } } /** * 推送消息 * Class Pusher */ class Pusher implements Message { public function send($user) { echo '发送推送给'. $user; } } (new MessageFacade())->send('憧憬 aoppp.com');