首页 > 代码库 > 外观模式
外观模式
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 }
外观模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。