zoukankan      html  css  js  c++  java
  • PHP设计模式之适配器模式

    将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本的由于接口不兼容而不能一起工作的那些类可以一起工作。
    应用场景:老代码接口不适应新的接口需求,或者代码很多很乱不便于继续修改,或者使用第三方类库。

    //老的代码     
    class User {    
        private $name;    
        function __construct($name) {    
            $this->name = $name;    
        }    
        public function getName() {    
            return $this->name;    
        }    
    }   

    //新代码,开放平台标准接口    
    interface UserInterface {    
        function getUserName();    
    }    
    class UserInfo implements UserInterface {    
        protected $user;    
        function __construct($user) {    
            $this->user = $user;    
        }    
        public function getUserName() {    
            return $this->user->getName();    
        }    
    }   

    $olduser = new User('张三');    
    echo $olduser->getName()."n";    
    $newuser = new UserInfo($olduser);    
    echo $newuser->getUserName()."n";   

    注意点:这里的新接口使用了组合方式,UserInfo内部有一个成员变量保存老接口User对象,模块之间是松耦合的,这种结构其实就是组合模式。不要使用继承,虽然UserInfo继承User也能达到同样的目的,但是耦合度高,相互产生影响。

  • 相关阅读:
    vue官方实例-组件
    数据处理-js
    图片大于div时的居中显示
    angularjs select通过动态加载option有空白项的处理方法-
    背景图片自适应div
    input-text
    input-number-required
    input-number-not-required
    null与undefined的区别?
    是true还是false呢?
  • 原文地址:https://www.cnblogs.com/-simon/p/5875745.html
Copyright © 2011-2022 走看看