• 外观模式


     1 <?php
     2 
     3 /**
     4  * 门面模式(Facade)又称外观模式,用于为子系统中的一组接口提供一个一致的界面。
     5  * 门面模式定义了一个高层接口,这个接口使得子系统更加容易使用:引入门面角色之后,
     6  * 用户只需要直接与门面角色交互,用户与子系统之间的复杂关系由门面角色来实现,从而降低了系统的耦合度。
     7  */
     8 
     9 
    10 interface Os
    11 {
    12     /**
    13      * halt the OS
    14      */
    15     public function halt();
    16 }
    17 
    18 interface Bios
    19 {
    20     /**
    21      * execute the BIOS
    22      */
    23     public function execute();
    24 
    25     /**
    26      * wait for halt
    27      */
    28     public function waitForKeyPress();
    29 
    30     /**
    31      * launches the OS
    32      *
    33      * @param OsInterface $os
    34      */
    35     public function launch(OsInterface $os);
    36 
    37     /**
    38      * power down BIOS
    39      */
    40     public function powerDown();
    41 }
    42 
    43 
    44 
    45 
    46 
    47 class Facade
    48 {
    49     /**
    50      * @var OsInterface
    51      */
    52     protected $os;
    53 
    54     /**
    55      * @var BiosInterface
    56      */
    57     protected $bios;
    58 
    59     
    60     /**
    61      * This is the perfect time to use a dependency injection container
    62      * to create an instance of this class
    63      *
    64      * @param BiosInterface $bios
    65      * @param OsInterface   $os
    66      */
    67     public function __construct(BiosInterface $bios, OsInterface $os)
    68     {
    69         $this->bios = $bios;
    70         $this->os = $os;
    71     }
    72 
    73     /**
    74      * turn on the system
    75      */
    76     public function turnOn()
    77     {
    78         $this->bios->execute();
    79         $this->bios->waitForKeyPress();
    80         $this->bios->launch($this->os);
    81     }
    82 
    83     /**
    84      * turn off the system
    85      */
    86     public function turnOff()
    87     {
    88         $this->os->halt();
    89         $this->bios->powerDown();
    90     }
    91 }
    View Code
  • 相关阅读:
    JQuery -- this 和 $(this) 的区别
    js动态生成表格
    Sublime 3 如何使用列编辑模式
    新版Sublime text3注册码被移除的解决办法
    Sublime text 3 格式化HTML/css/js/json代码 插件
    mingw64 构建 Geos
    C++调用Python浅析
    linux下挂载VHD等虚拟磁盘文件
    linux 下Qt WebEngine 程序打包简单记录
    C++ UTF8和UTF16互转代码
  • 原文地址:https://www.cnblogs.com/hangtt/p/6261992.html
Copyright © 2020-2023  润新知