设计模式 | 门面模式 Facade

简介: 设计模式 | 门面模式 Facade

说明

门面模式又叫外观模式,这个设计模式也比较简单,比较容易理解,其实在我们正常编码中就已经写出了门面模式,但是我们并不知道这个写法是叫门面模式。

门面模式的定义:提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。

简而言之就是请求一个接口 这个接口对应的操作是聚合了多个子系统的操作。这样使得子系统与客户之间是松耦合,更助于对象之间的依赖关系分层。

示例

我想做一个发送通知的操作,那么这个发送其实应该包含发送 短信、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');


目录
相关文章
|
设计模式 算法
设计模式7 - 门面模式【Facade Pattern】
设计模式7 - 门面模式【Facade Pattern】
58 1
|
设计模式 算法 C++
设计模式之门面模式(C++)
设计模式之门面模式(C++)
|
6月前
|
设计模式 Java 应用服务中间件
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用
61 1
|
6月前
|
设计模式
设计模式之-门面 Facade
设计模式之-门面 Facade
59 2
|
设计模式 Java 数据库连接
【设计模式——学习笔记】23种设计模式——外观模式Facade(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——外观模式Facade(原理讲解+应用场景介绍+案例介绍+Java代码实现)
104 0
|
6月前
|
设计模式
设计模式 | 门面模式 Facade
设计模式 | 门面模式 Facade
49 0
|
6月前
|
设计模式 传感器
将设计模式门面模式运用到生活当中
将设计模式门面模式运用到生活当中
|
6月前
|
设计模式
二十三种设计模式全面解析-外观模式(Facade Pattern)详解:简化复杂系统的奇妙之道
二十三种设计模式全面解析-外观模式(Facade Pattern)详解:简化复杂系统的奇妙之道
110 0
|
6月前
|
设计模式 Java 数据库连接
认真学习设计模式之外观模式(Facade Pattern)
认真学习设计模式之外观模式(Facade Pattern)
67 0
|
设计模式
设计模式系列教程(10) - 外观模式(门面模式)
设计模式系列教程(10) - 外观模式(门面模式)
98 0