• 设计模式之外观模式(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();
  • 相关阅读:
    针对性博文
    spring事务
    Redis_主从模式_哨兵模式_Cluster集群模式
    Redis AOF、RDB持久化
    Redis 高可用分布式集群
    Redis 基础
    Oracle优化学习
    Mysql:索引实战
    Mysql:性能优化
    js 二维数组定义
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/9147554.html
Copyright © 2020-2023  润新知