概念
提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。
本质:就是化零为整;引入一个中介类,把各个分散的功能组合成一个整体,只对外暴露一个统一的接口。
实例:
商人的水果摊一天的日子如下:
1.水果摊开门
2.取出水果
3.上架水果
4.下架水果
5.放回水果
6.关门
<?php
/**
* 水果摊的店门
*/
class Door
{
//开门
public function open(){}
//关门
public function close(){}
}
/**
* 水果摊的货架
*/
class Shelves
{
//上架水果
public function putOn(){}
//下架水果
public function putDown(){}
}
/**
* 水果
*/
class Fruits
{
//从保鲜箱中取出水果
public function take(){}
//将水果放回保险箱中
public function put(){}
}
//普通方法调用下,水果摊一天的生活是这样的:
//营业状态
$door = new Door();
$door->open(); //1.开门
$fruits = new Fruits();
$fruits->take(); //2.取出水果
$shelves = new Shelves();
$shelves->putOn(); //3.上架水果
//打烊状态
$shelves->putDown(); //4.下架水果
$fruits->put(); //5.放回水果
$door->close(); //6.关门
/**
* 门面设计模式
*/
class FruitsLife
{
protected $door;
protected $fruits;
protected $shelves;
public function __construct()
{
$this->door = new Door();
$this->fruits = new Fruits();
$this->shelves = new Shelves();
}
//营业状态
public function open()
{
$this->door->open(); //1.开门
$this->fruits->take(); //2.取出水果
$this->shelves->putOn(); //3.上架水果
}
//打烊状态
public function close()
{
$this->shelves->putDown(); //4.下架水果
$this->fruits->put(); //5.放回水果
$this->door->close(); //6.关门
}
}
/**
* 门面设计模式下,水果摊一天的生活是这样的
*/
$fruitsLife = new FruitsLife();
//营业状态
$fruitsLife->opne();
//打烊状态
$fruitsLife->close();
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。