结构型设计模式 - 外观 Facade
作者:菜皮日记
- 2023-09-08 北京
本文字数:1037 字
阅读完需:约 3 分钟
简介
外观模式特点是屏蔽后端复杂的实现逻辑,将其整合成简单的一个或几个接口提供出去,client 只需与 Facade 层提供的简单接口交互即可。
例如银行办业务,后面涉及到很多财务细节,但用户面对的就是一个窗口业务员。
角色
Facade 外观层
Subsystem 负责具体事务的子系统们
类图
类图
代码
class Facade{ protected $subsystem1;
protected $subsystem2;
public function __construct( Subsystem1 $subsystem1 = null, Subsystem2 $subsystem2 = null ) { $this->subsystem1 = $subsystem1 ?: new Subsystem1(); $this->subsystem2 = $subsystem2 ?: new Subsystem2(); }
public function operation(): string { $result = "Facade initializes subsystems:\n"; $result .= $this->subsystem1->operation1(); $result .= $this->subsystem2->operation1(); $result .= "Facade orders subsystems to perform the action:\n"; $result .= $this->subsystem1->operationN(); $result .= $this->subsystem2->operationZ();
return $result; }}
class Subsystem1{ public function operation1(): string { return "Subsystem1: Ready!\n"; }
public function operationN(): string { return "Subsystem1: Go!\n"; }}
class Subsystem2{ public function operation1(): string { return "Subsystem2: Get ready!\n"; }
public function operationZ(): string { return "Subsystem2: Fire!\n"; }}
function clientCode(Facade $facade){ echo $facade->operation();}
$subsystem1 = new Subsystem1();$subsystem2 = new Subsystem2();$facade = new Facade($subsystem1, $subsystem2);clientCode($facade);
复制代码
output:
Facade initializes subsystems:Subsystem1: Ready!Subsystem2: Get ready!Facade orders subsystems to perform the action:Subsystem1: Go!Subsystem2: Fire!
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 3
菜皮日记
关注
全干程序员 2018-08-08 加入
还未添加个人简介










评论