zoukankan      html  css  js  c++  java
  • 设计模式之外观模式(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();
  • 相关阅读:
    vmareworkstation 15 安装密钥
    Linux进入ftp界面退出方法
    linux安装mysql(5.1.73)
    安装http服务,用http搭建web网
    telnet远程连接
    yum出现问题解决方法
    samba
    nfs搭建
    解决VMwareworkstation无法在windows上运行
    2 shell编程
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/9147554.html
Copyright © 2011-2022 走看看