zoukankan      html  css  js  c++  java
  • PHP设计模式(七)适配器模式(Adapter For PHP)

    适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

    如下图(借图): 

     // 设置书的接口

    // 书接口
    interface BookInterface
    {
        // 翻页方法
        public function turnPage();
    
        // 打开书方法
        public function open();
    }
    // 纸质书实现类
    class Book implements BookInterface
    {
        public function turnPage()
        {
            echo "纸质书翻页". "<br>";
        }
    
        public function open()
        {
            echo "纸质书打开". "<br>";
        }
    }

    客户端测试:

    // 客户端测试
    $book = new Book();
    $book->open();
    $book->turnPage();

    输出结果:

    纸质书打开
    纸质书翻页

    这时候,你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。

    如下:

    // 待适配对象
    class Kindle
    {
        public function turnPage()
        {
            echo "电子书翻页". "<br>";
        }
    
        public function open()
        {
            echo "电子书打开". "<br>";
        }
    }

    // 适配器

    class KindleAdapter implements BookInterface
    {
        protected $_kindle;
    
        public function __construct($obj)
        {
            $this->_kindle = $obj;
        }
    
    
        public function turnPage()
        {
            $this->_kindle->turnPage();
        }
    
        public function open()
        {
            $this->_kindle->open();
        }
    }

    // 客户端测试

    $kindle = new KindleAdapter(new Kindle());
    $kindle->open();
    $kindle->turnPage();

    // 输出结果

    电子书打开
    电子书翻页

    后记:

    本文仅为个人学习笔记整理,如有纰漏之处,欢迎指正!

  • 相关阅读:
    WCF 4.0中的动态发现服务WSDiscovery
    Windows Server 2008 R2 Server Core
    Open Source Web Design
    Windows Identity Foundation(WIF)正式发布
    是开始学习IronPython 的时候了
    IronPython 承载和消费WCF服务
    微博客程序 Yonkly
    如何启用匿名访问SQL Server Reporting Service 2008
    ASP.NET MVC 2 RC 发布
    SharePoint 2010 VHD下载
  • 原文地址:https://www.cnblogs.com/wilburxu/p/6200570.html
Copyright © 2011-2022 走看看