github地址:https://github.com/ZQCard/design_pattern
/** * 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。 * 这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。 * 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。 */
(1)Shape.class.php (接口类,规范实现类接口)
<?php namespace Facade; interface Shape { public function draw(); }
(2)Circle.class.php (圆形具体实现类)
<?php namespace Facade; class Circle implements Shape { public function draw() { print_r("CirCle"); } }
(3)Square.class.php (正方形具体实现类)
<?php namespace Facade; class Square implements Shape { public function draw() { print_r("Square"); } }
(4)Rectangle.class.php(长方形实现类)
<?php namespace Facade; class Rectangle implements Shape { public function draw() { print_r("Rectangle"); } }
(5) ShapeFacade.class.php(形状门面装饰类)
<?php namespace Facade; class ShapeFacade { private $circle; private $rectangle; private $square; public function __construct() { $this->circle = new Circle(); $this->rectangle = new Rectangle(); $this->square = new Square(); } public function drawCircle(){ $this->circle->draw(); } public function drawRectangle() { $this->rectangle->draw(); } public function drawSquare() { $this->square->draw(); } }
(6)facade.php (客户端)
<?php spl_autoload_register(function ($className){ $className = str_replace('\','/',$className); include $className.".class.php"; }); use FacadeShapeFacade; $shape = new ShapeFacade(); $shape->drawCircle();