设计模式心得:七——外观模式
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口可以使得子系统更加容易使用。
从定义中可以知道,外观模式是为了封装一个复杂的子系统的操作,以提供用户简单易懂的接口。这样做除了能够方便的使用外观模式封装的接口外,还能到达解耦的目的,从复杂的系统解耦只与高层接口交互。
在生活中有很多外观模式的例子,例如:我们的电脑,它的启动就是一个外观模式很好的例子,一个启动按钮就是一个接口,我们只需要知道按下启动按钮就知道它能启动运行就可以了,具体它里面干了哪些事我们一无所知,也不需要知道。
下面就是模拟电脑开启的代码
代码
<?php
class Computer {
private $_memory;
private $_mainboard;
private $_cpu;
private $_harddisk;
public function __construct(Memory $memory, Mainboard $mainboard, CPU $cpu, HardDisk $harddisk)
{
$this->_memory = $memory;
$this->_mainboard = $mainboard;
$this->_cpu = $cpu;
$this->_harddisk = $harddisk;
}
public function start()
{
$this->_mainboard->open();
$this->_cpu->start();
$this->_memory->load();
$this->_harddisk->read();
}
}
class Mainboard {
public function open()
{
echo '主板加电<br />';
}
}
class CPU {
public function start()
{
echo 'CPU开始运转<br />';
}
}
class Memory {
public function load()
{
echo '加载内存<br />';
}
}
class HardDisk {
public function read()
{
echo '读取硬盘<br />';
}
}
$computer = new Computer(new Memory(), new Mainboard(), new CPU(), new HardDisk());
$computer->start();
?>
// 结果
// 主板加电
// CPU开始运转
// 加载内存
// 读取硬盘