设计模式之外观模式(PHP实现)

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();
原文地址:https://www.cnblogs.com/zhouqi666/p/9147554.html