适配器模式例子

<?php

class Message{
  private $message;
  function __construct($m){
    $ip = $_SERVER(‘REMDTE_ADDR‘);
    $this->message = $ip.‘:‘.$m;
  }
  function getMessage(){
    return $this->message;
  }
}

//适配器类,不改变原有类的情况下.增加新的借口
class MessageAdapter extends Message{
  private $ip;
  private $text;
  function __construct(){
    //适配器往往需要调用父类的某些方法
    parent::__construct($m){
      $message = $this->getMessage();
      $arr = explode(":", $message);
      $this->ip = $arr[0];
      $this->text = $arr[1];
    }
  }
  function getip(){
    return $this->ip;
  }
  function getText(){
    return $this->text;
  }
}

class LogFile{
  public static function write($messageObj){
    $message->$messageObj->getMessage();
    $h = fopen(‘./log.log‘, ‘a‘);
    fwrite($h, $message."\n");
    fclose($h);
  }
}

class LogCSV{
  public static function write($messageObj){
    $ip = $messageObj->getIp();
    $text = $messageObj->getText();
    $message = $ip.‘,‘.$text;
    $h = fopen(‘./log.csv‘, ‘a‘);
    fwrite($h, $message."\n");
    fclose($h);
  }
}

$m = new MessageAdapter(‘this is a log!!‘);
LogFile::write($m);

时间: 2024-12-18 02:02:12

适配器模式例子的相关文章

(转)Java经典设计模式(2):七大结构型模式(附实例和详解)

原文出处: 小宝鸽 总体来说设计模式分为三大类:创建型模式.结构型模式和行为型模式. 博主的上一篇文章已经提到过创建型模式,此外该文章还有设计模式概况和设计模式的六大原则.设计模式的六大原则是设计模式的核心思想,详情请看博主的另外一篇文章:Java经典设计模式之五大创建模式(附实例和详解). 接下来我们看看结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式.其中适配器模式主要分为三类:类的适配器模式.对象的适配器模式.接口的适配器模式.其中的对象的适配器

Java经典设计模式之七大结构型模式(附实例和详解)

博主在大三的时候有上过设计模式这一门课,但是当时很多都基本没有听懂,重点是也没有细听,因为觉得没什么卵用,硬是要搞那么复杂干嘛.因此设计模式建议工作半年以上的猿友阅读起来才会理解的比较深刻.当然,你没事做看看也是没有坏处的. 总体来说设计模式分为三大类:创建型模式.结构型模式和行为型模式. 博主的上一篇文章已经提到过创建型模式,此外该文章还有设计模式概况和设计模式的六大原则.设计模式的六大原则是设计模式的核心思想,详情请看博主的另外一篇文章:Java经典设计模式之五大创建模式(附实例和详解).

用最简单的例子理解适配器模式(Adapter Pattern)

中国足球的水平虽然不高,但实际上,在每个城市会有一批足球爱好者,他们踢球.看球.懂球.有这样的2个足球爱好者,一个是左脚选手,另一个是右脚选手. public class PlayWithLeft { public void Play() { Console.WriteLine("我是左脚选手"); } } public class PlayWitRight { public void Play() { Console.WriteLine("我是右脚选手"); }

Javascript设计模式理论与实战:适配器模式

有的时候在开发过程中,我们会发现,客户端需要的接口和提供的接口发生不兼容的问题.由于特殊的原因我们无法修改客户端接口.在这种情况下,我们需要适配现有接口和不兼容的类,这就要提到适配器模式.通过适配器,我们可以在不用修改旧代码的情况下也能使用它们,这就是适配器的能力. 基本理论 适配器模式:将一个接口转换成客户端需要的接口而不需要去修改客户端代码,使得不兼容的代码可以一起工作. 适配器主要有3个角色组成:(1)客户端:调用接口的类(2)适配器:用来连接客户端接口和提供服务的接口的类(3)适配者:提

设计模式之四:适配器模式(Adapter Pattern)

在软件系统中,由于应用环境的变化,常常需要将"一些现存的对象"放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的.如果能既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?这就是适配器模式要解决的问题. 目的:将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 下面以日志记录程序为例子说明Adapter模式.假设我们在软件开发中要记录日志,包括数据库记录日志DatabaseLog和文本文件

设计模式之适配器模式与外观模式

适配器模式将一个类的接口,转换成客户期望的另一个接口.适配器让原本接口不兼容的类可以合作无间. 例子:火鸡变鸭子. 先定义一个鸭子接口. package cn.sp.test06; /** * 鸭子 * @author 2YSP * */ public interface Duck { //具备呱呱叫 和 飞行的能力 public void quack(); public void fly(); } package cn.sp.test06; /** * 绿头鸭是鸭子的子类 * @author

设计模式学习总结(七)适配器模式(Adapter)

适配器模式主要是通过适配器来实现接口的统一,如要实现国内手机在国外充电,则需要在不同的国家采用不同的适配器来进行兼容! 一.示例展示: 以下例子主要通过给笔记本电脑添加类似手机打电话和发短信的功能来详细演示适配器模式的应用! 对象适配器: 1. 创建抽象类:Handphone public abstract class Handphone { public abstract void Dail(); public abstract void SendMessage(); } 2. 创建抽象类:L

适配器模式(接口)

一.适配器(Adapter)模式 是把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 二.优点 更好的复用性 系统需要使用现有的类,而此类的接口不符合系统的需要.那么通过适配器模式就可以让这些功能得到更好的复用. 更好的扩展性 在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能. 三.缺点 过多的使用适配器,会让系统非常零乱,不易整体进行把握.比如,明明看到调用的是A接口,其实内部被适配成了B接口的实现,一个系统如

(八)适配器模式

转载:http://www.cnblogs.com/zuoxiaolong/p/pattern9.html 适配器模式从实现方式上分为两种,类适配器和对象适配器,这两种的区别在于实现方式上的不同,一种采用继承,一种采用组合的方式.        另外从使用目的上来说,也可以分为两种,特殊适配器和缺省适配器,这两种的区别在于使用目的上的不同,一种为了复用原有的代码并适配当前的接口,一种为了提供缺省的实现,避免子类需要实现不该实现的方法. 首先应该明白一点,适配器模式是补救措施,所以在系统设计过程中