zoukankan      html  css  js  c++  java
  • 深入 Laravel 内核之外观模式(门面模式)

    门面模式核心内容:

    • 客户端与子系统的通信通过外观对象进行;
    • 外观对象封装一系列子系统的具体对应方法,对客户端只需暴露一个单一的入口方法;
    • 客户端通过访问外观对象即可调用子系统的基础方法,无需关心子系统的具体实现;
    • 可以通过引入抽象外观类解决增减子系统需要修改外观类的问题;
    • 可以通过引入外部配置文件实现外观对象与不同子系统的绑定关系;
    • 外观模式可以有效降低客户端与子系统的耦合度,客户端只与外观对象交互,不关心子系统的复杂细节;
    • 一个系统通常只需要一个外观类,一般情况下外观类为单例模式;

    先定义两个子系统,子系统有各自的操作方法:

    class SystemA
    {
        public function operationA()
        {
            //
        }
    }
    
    class SystemB
    {
        public function operationB()
        {
            //
        }
    }
    

    定义一个外观类,提供单一入口,内部负责调用子系统的方法:

    class Facade
    {
        private $systemA;
        private $systemB;
    
        public function __construct()
        {
            $this->systemA = new SystemA;
            $this->systemB = new SystemB;
        }
    
        public function operation()
        {
            $this->systemA->operationA();
            $this->systemB->operationB();
        }
    }
    

    定义客户端,客户端只需要与外观类交互即可实现对子系统的调用:

    class Client
    {
        public function main()
        {
            (new Facade)->operation();
        }
    }
    
  • 相关阅读:
    函数对象
    函数的基本使用
    文件处理
    字符编码
    基本数据类型及内置方法二
    流程控制(if while for)
    Django中ajax的基本用法
    CBV之Django中View类部分源码分析
    前端基础之BOM和DOM
    css基础
  • 原文地址:https://www.cnblogs.com/danhuang/p/13165152.html
Copyright © 2011-2022 走看看