大话设计模式第十七章--适配器模式

<?php
abstract class Target {
    abstract public function request();
}

class Normal extends Target {
    public function request() {
        echo "NORMAL REQUEST";
    }
}

class Adaptee {
    public function special_request() {
        echo "SPECIAL REQUEST";
    }
}

class Adapter extends Target {
    private $_adaptee;
    public function __construct() {
        $this->_adaptee = new Adaptee();
    }
    public function request() {
        $this->_adaptee->special_request();
    }
}

$target = new Adapter();
$target->request();

适配器模式:

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

  使得客户代码可以统一调用同一接口。

注意与外观模式的区别!!

时间: 2024-11-05 20:48:49

大话设计模式第十七章--适配器模式的相关文章

大话设计模式第三章之单一职责原则

单一职责原则指的是就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能削弱或者抑制这个类完成其它职责的能力(就像一个程序员  叫他去做医学研究,生物研究,可能会抑制他学设计模式的能力).这种耦合会导致脆弱的设计,当变化发生时,设计会遭到异常不到的破坏(你医学研究久了,设计模式少接触,也就生疏了). 在写一个类的时候,要在类的职责分离上多思考(类的职责搞不清楚,就好像你生病了去找修车的,买菜去学校买),这样代码才是真正的可维护,易扩

第十七章 适配器模式

适配器模式:将一个类的借口转换成客户希望的另外一个接口. 应用场景:系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器模式,目的是使控制范围之外的一个原有对象与某个接口匹配.主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况. 注意:应该注意其应用场景,不能本末倒置. /** * Created by hero on 16-4-4. */ public abstract class Player { private String name; public abstra

大话设计模式读书笔记--13.适配器模式

定义 适配器模式定义: 将一个类的接口转换成客户希望的另一个接口, 使得原本由于接口不兼容不能再一起工作的类,可以在一起工作 需要的东西就在眼前,但却不能使用,短时间内无非改造,于是我们就想办法适配它 例如: 一些国家的电压是不同的, 但是笔记本电脑通过电源适配器,都能把电源变成需要的电压 模式结构 Target: 客户期待的接口,可以是抽象类或者接口 Adapter: 在内部包装一个Adeptee对象,把原接口转为目标接口 Adeptee: 需要适配的类 代码实现 场景: 刚到NBA打球的姚明

《大话设计模式》 --- 第二章 策略模式

面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类. 策略模式:定义了算法,分别封装,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户. 策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合. 策略模式中普通算法的策略类为环境定义了一系列可供重用的算法或行为.继承有助于析出出这些算法中的公共功能.

大话设计模式第七章---代理模式模式PHP实现

<?php abstract class Subject { abstract public function request(); } class Real_subject extends Subject { public function request() { echo "真实请求"; } } class Proxy extends Subject { private $_real_subject = null; public function request() { if

大话设计模式第十三章之建造者模式

package com.build; /** * 建造胖子 * @author 黄二狗 * */ public class PersonFatBuilder { public PersonFatBuilder() { } public void build() { System.out.println("大头"); System.out.println("大腿"); System.out.println("粗腰"); } } package co

大话设计模式第六章---装饰模式PHP实现

1 <?php 2 abstract class Component { 3 abstract public function operation(); 4 } 5 6 class Concrete_component extends Component { 7 public function operation() { 8 echo "具体对象的操作<br/>"; 9 } 10 } 11 12 abstract class Decorator extends Com

大话设计模式第十三章---建造者模式比较

<?php class Product { private $_parts = array(); public function add(string $part) { $this->_parts[] = $part; } public function show() { echo "\n PRODUCT CREATEING...<br/>"; foreach ($this->_parts as $part) { echo $part; echo &quo

&lt;七&gt;读&lt;&lt;大话设计模式&gt;&gt;之模板模型

哈哈,真没想到,不知不觉已经写到第七篇文章了,看来本人还是很有毅力的.其实坚持一件事很简单,只要你每天不断的朝着自己的目标出发,任何事情都不会挡着你.好了大道理不多说,谁都懂,那看看这个模板模式大家懂不懂了. 对于模板模式可能听起来很吓人,其实大家都用过,只是不知道罢了,也很简单.从字面意思上看就是我写出一个模板,然后其他类直接继承它就可以拥有模板类中的东西了,听起来像继承的定义,是的,就像现在开发一个论坛,为了能够开发速度更快,我们通常就是网上找一个模板下载下来,然后在模板基础上进行二次开发,