23种设计模式-外观模式


23种设计模式-外观模式

概述

外观模式又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口。外部程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。

结构

外观模式包含以下角色:

  • 外观角色:为多个子系统对外提供一个共同的接口
  • 子系统角色:实现系统的部分功能,客户可以通过外观角色访问它

实现

/**
* 比如有一个子系统,我需要导出数据去做年终总结,那我需要导出订单相关数据和用户相关数据
 */

interface Export {
    public function export();
}

/**
 * 用户数据导出类
 */
class UserExport implements Export
{
    public function export()
    {
        echo '导出用户数据';
    }
}

/**
 * 订单数据导出类
 */
class OrderExport implements Export
{
    public function export()
    {
        echo '导出订单数据';
    }
}

/**
 * 导出门面类
 */
class ExportFacade
{
    public function __construct(public Export $userExport, public Export $orderExport)
    {

    }

    public function export()
    {
        $this->userExport->export();
        $this->orderExport->export();
    }
}

// 测试
$exportService = new ExportFacade(new UserExport(), new OrderExport());
$exportService->export();

文章作者: 我若为侠
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 我若为侠 !
 上一篇
23种设计模式-组合模式 23种设计模式-组合模式
23种设计模式-组合模式概述组合模式又名部分整体模式,是用于把一组相似的对象当做一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 结构组合模式主要包含以下
下一篇 
23种设计模式-桥接模式 23种设计模式-桥接模式
23种设计模式-桥接模式概念桥接模式是指将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现。从而降低了抽象和实现这两个可变维度的耦合度 结构桥接模式包含一下主要角色: 抽象化角色:定义抽象类,并包含一个对实现化对象的引
  目录