说明
门面模式又叫外观模式,这个设计模式也比较简单,比较容易理解,其实在我们正常编码中就已经写出了门面模式,但是我们并不知道这个写法是叫门面模式。
门面模式的定义:提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。
简而言之就是请求一个接口 这个接口对应的操作是聚合了多个子系统的操作。这样使得子系统与客户之间是松耦合,更助于对象之间的依赖关系分层。
示例
我想做一个发送通知的操作,那么这个发送其实应该包含发送 短信、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');
本文为作者原创,手码不易,允许转载,转载后请以链接形式说明文章出处。