首页 > 代码库 > 外观模式

外观模式

 

技术分享

技术分享
 1 <?php 2  3 /** 4  * 门面模式(Facade)又称外观模式,用于为子系统中的一组接口提供一个一致的界面。 5  * 门面模式定义了一个高层接口,这个接口使得子系统更加容易使用:引入门面角色之后, 6  * 用户只需要直接与门面角色交互,用户与子系统之间的复杂关系由门面角色来实现,从而降低了系统的耦合度。 7  */ 8  9 10 interface Os11 {12     /**13      * halt the OS14      */15     public function halt();16 }17 18 interface Bios19 {20     /**21      * execute the BIOS22      */23     public function execute();24 25     /**26      * wait for halt27      */28     public function waitForKeyPress();29 30     /**31      * launches the OS32      *33      * @param OsInterface $os34      */35     public function launch(OsInterface $os);36 37     /**38      * power down BIOS39      */40     public function powerDown();41 }42 43 44 45 46 47 class Facade48 {49     /**50      * @var OsInterface51      */52     protected $os;53 54     /**55      * @var BiosInterface56      */57     protected $bios;58 59     60     /**61      * This is the perfect time to use a dependency injection container62      * to create an instance of this class63      *64      * @param BiosInterface $bios65      * @param OsInterface   $os66      */67     public function __construct(BiosInterface $bios, OsInterface $os)68     {69         $this->bios = $bios;70         $this->os = $os;71     }72 73     /**74      * turn on the system75      */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 system85      */86     public function turnOff()87     {88         $this->os->halt();89         $this->bios->powerDown();90     }91 }
View Code

 

外观模式