zoukankan      html  css  js  c++  java
  • PHP设计模式系列

    • 什么是适配器:

    适配器设计模式只是将某个对象的接口适配为另一个对象所期望的接口。

    • 设计情景:
    1. 假如我们原始的有一个UserInfo的类,提供用户信息的类,早起设计该类的时候,只实现了一个getUserName获取用户名的方法。
    2. 我们的MyOldObject类中,将从UserInfo这个类中获取用户信息,并且输出用户名
    3. 随着时间的推移,我们旧的UserInfo这个类只提供的获取用户名的方法,已经没法满足需求,我们同时需要获取用户的年龄等信息。
    4. 为了不改变原本UserInfo这个类,我们就继承UserInfo,建立一个UserInfoAdapter类,实现getAge获取年龄这样的方法。
    5. 在我们的MyNewObject新的类中,我们实例化UserInfoAdapter,打印出用户姓名和年龄。
    6. 这样,随着我们的扩展,我们没有改变原先UserInfo这个类和使用这个类的接口,我们通过适配的方法,将UserInfo类扩展出来
    • 代码:UserInfo类,实现getUserName方法
        <?php   
        //早期的一个用户类,只实现获取用户名的方法  
        class UserInfo {  
          
            public function getUserName() {  
                return 'initphp';  
            }  
        }  

    代码:MyOldObject类,从UserInfo类中获取信息,输出用户名

        <?php  
        include_once("UserInfo.php");  
        class MyOldObject {  
            public function write() {  
                $UserInfo = new UserInfo;  
                echo $UserInfo->getUserName();  
            }  
        }  
        $a = new MyOldObject;  
        $a->write();  

    代码:UserInfoAdapter类,随着时间推移,项目需求在变化,UserInfo类无法满足需求,我们做了UserInfo类的适配器,满足新功能的需求

    <?php   
    include_once("UserInfo.php");   
    class UserInfoAdapter extends UserInfo{  
      
        public function getUserAge() {  
            return 28;  
        }  
          
        public function getUser() {   
            return array(  
                'username' => $this->getUserName(),  
                'age' => $this->getUserAge()  
            );  
        }  
    } 

    代码:MyNewObject类,新功能的类,需要打印出用户年龄和姓名,UserInfo类无法满足需求,需要调用UserInfoAdapter适配器这个类

    <?php  
    include_once("UserInfoAdapter.php");  
    class MyNewObject {   
        public function write() {  
            $UserInfoAdapter = new UserInfoAdapter;  
            print_r($UserInfoAdapter->getUser());   
        }  
    }  
    $a = new MyNewObject;  
    $a->write(); 

    转自:http://blog.csdn.net/initphp/article/details/7676129

  • 相关阅读:
    Linux网络配置
    配置bash以及bash初始化
    文本提取、分析和修改工具
    标准输入输出和管道
    文件和文件夹管理
    用户、组和权限
    vim工具使用
    Linux获取命令帮助的方法
    Linux知识整理-入门和体验
    Robot Framework简易复刻版-未完成
  • 原文地址:https://www.cnblogs.com/zhhtao/p/4414584.html
Copyright © 2011-2022 走看看