外观模式
约 378 字大约 1 分钟
2025-07-08
也称门面模式(Facade),用于为子系统中的一组接口提供一个一致的界面。
让我们考虑一个场景:假设我们有一个汽车生产线,生产线上有各种子系统来制造汽车的不同部件,比如引擎、车身和轮胎。使用外观模式,我们可以封装这些复杂的子系统,让客户端只需与一个简单的接口交互,而无需关心底层的具体实现。
<?php
// 定义汽车制造子系统
// 引擎
class Engine {
public function start() {
echo "Engine started<br>";
}
}
// 车身
class Body {
public function build() {
echo "Body built<br>";
}
}
// 轮胎
class Wheel {
public function install() {
echo "Wheel installed<br>";
}
}
// 外观类,封装了汽车制造的子系统
class CarFacade {
private $engine;
private $body;
private $wheel;
public function __construct() {
$this->engine = new Engine();
$this->body = new Body();
$this->wheel = new Wheel();
}
// 提供一个简单的方法来启动汽车制造过程
public function manufactureCar() {
$this->engine->start();
$this->body->build();
$this->wheel->install();
echo "Car manufactured successfully!<br>";
}
}
// 客户端代码
$carFacade = new CarFacade();
$carFacade->manufactureCar();
在这个示例中,Engine、Body 和 Wheel 分别表示汽车的引擎、车身和轮胎制造子系统。CarFacade 类是外观类,封装了这些子系统,并提供了一个简单的方法 manufactureCar() 来启动汽车制造过程。客户端只需要实例化 CarFacade 类,并调用 manufactureCar() 方法即可制造一辆汽车,而不必关心汽车制造的具体步骤。