加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php设计模式之适配器模式原理、用法及注意事项介绍

发布时间:2022-07-12 15:29:38 所属栏目:PHP教程 来源:互联网
导读:本文实例讲述了php设计模式之适配器模式原理、用法及注意事项,分享给大家供大家参考,具体如下: 什么时候会用到适配器模式? 其实最简单的例子是当我们引用一个第三方类库。这个类库随着版本的改变,它提供的API也可能会改变。如果很不幸的是,你的应用里
  本文实例讲述了php设计模式之适配器模式原理、用法及注意事项,分享给大家供大家参考,具体如下:
 
  什么时候会用到适配器模式?
 
  其实最简单的例子是当我们引用一个第三方类库。这个类库随着版本的改变,它提供的API也可能会改变。如果很不幸的是,你的应用里引用的某个API已经发生改变的时候,除了在心中默默地骂“wocao”之外,你还得去硬着头皮去改大量的代码。
 
  难道真的一定要如此吗?按照套路来说,我会回答“不是的”。我们有适配器模式啊~~
 
  当接口发生改变时,适配器模式就派上了用场。
 
  举个栗子
 
  如果通过上面的简单描述,你都能懂,那在下只能佩服你的领悟能力超群了。一般人一定还是不知所云。为了方便理解,我引用一位博友的例子。原文地址。
 
 
  平衡的破坏
 
  为了扩大业务,现在黑枣玩具公司与红枣遥控公司合作,红枣遥控公司可以使用遥控设备对动物进行嘴巴控制。不过红枣遥控公司的遥控设备是调用的动物的doMouthOpen及doMouthClose方法。黑枣玩具公司的程序员现在必须要做的是对Toy系列类进行升级改造,使Toy能调用doMouthOpen及doMouthClose方法。
 
  考虑实现的方法时,我们很直接地想到,你需要的话我再在我的父类子类里给你添加这么两个方法就好啦。当你一次又一次在父类子类里面重复添加着这两个方法的时候,总会想着如此重复的工作,难道不能解决么?当有数百个子类的时候,程序员会改疯的。程序员往往比的是谁在不影响效率的时候更会“偷懒”。这样做下去程序员会觉得自己很傻。(其实我经常当这样的傻子)
 
  abstract class Toy
  {
    public abstract function openMouth();
    public abstract function closeMouth();
    //为红枣遥控公司控制接口增加doMouthOpen方法
    public abstract function doMouthOpen();
    //为红枣遥控公司控制接口增加doMouthClose方法
    public abstract function doMouthClose();
  }
  class Dog extends Toy
  {
    public function openMouth()
    {
      echo "Dog open Mouthn";
    }
    public function closeMouth()
    {
      echo "Dog open Mouthn";
    }
    //增加的方法
    public function doMouthOpen()
    {
     {
      echo "Cat open Mouthn";
    }
    //增加的方法
    public function doMouthOpen()
    {
      $this->doMouthOpen();
    }
    //增加的方法
    public function doMouthClose()
    {
      $this->closeMouth();
    }
  }
  更加烦躁
 
  程序员刚刚码完代码,喝了口水,突然间另一个消息传来。
 
  黑枣玩具公司也要与绿枣遥控公司合作,因为绿枣遥控公司遥控设备更便宜稳定。不过绿枣遥控公司的遥控设备是调用的动物的operMouth(type)方法来实现嘴巴控制。如果type)方法来实现嘴巴控制。如果type为0则“闭嘴”,反之张嘴。
 
  这下好了,程序员又得对Toy及其子类进行升级,使Toy能调用operMouth()方法。搁谁都不淡定了。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读