设计模式之Adapter模式(笔记)

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

首先定义一个目标接口ITarget

public interface ITarget {

    public void request();
}

然后定义一个需要适配的类Adaptee

public class Adaptee {

    public void specialRequest(){
        System.out.println("特殊请求");
    }
}

接着定义一个Adapter类继承 ITarget接口

public class Adapter implements ITarget{

    private Adaptee adaptee=new Adaptee();
    @Override
    public void request() {

        adaptee.specialRequest();
    }
}

客户端代码

public static void main(String[] args) {
    //适配器模式
    ITarget target=new Adapter();
    target.request();
}
时间: 2024-07-28 23:29:18

设计模式之Adapter模式(笔记)的相关文章

图解设计模式之Adapter模式

什么是Adapter模式  Adapter模式即适配器模式,对于适配器的理解参考现实生活中把交流电转换成直流电的电源适配器,用于填补现有的程序和所需的程序之间差异的设计模式就是Adapter模式,有以下两种实现方式: 1. 类适配器模式(使用继承的适配器) 2. 对象适配器模式(使用委托的适配器)所谓继承和委托的区别在哪呢?委托是指将某个方法中的实际处理交给其他实例的方法,继承则是自己进行处理,下面分别看下两种实现方式: 代码清单 这里有一个需要被适配的Banner类 /** * 被适配角色:交

设计模式之Adapter模式

说起Adapter,STL里的stack和queue都是adapter,底层是deque,隐藏了deque的一些接口,使得其可以达到FIFO是queue,LIFO是stack. The STL stack is a container adaptor. That is, it is not a "first-class" container, but instead simply "adapts" one of the sequential first-class

设计模式--适配器(Adapter)模式

今天学习另一个设计模式,适配器(Adapter)模式,这是一个共同方向,但有特殊要求,就应用到此设计模式.写到这里,想起很久以前,有写过一篇<ASP.NET的适配器设计模式(Adapter)>http://www.cnblogs.com/insus/archive/2013/02/04/2891426.html ,但是似乎没有适配器的味道. 比如一个系统,开发时设计好各种权限,但某一种,客户提出要求,需要一个特殊的权限来操作.只好开发一个适配器来让其有这个特殊操作权限. 用代码来举例吧. 先定

设计模式-Adapter模式

最近在工作中遇到了一种场景,大概是这样:一个项目中,包含Widget(桌面小部件),它是由RemoteViews来渲染和实现的,而现在的需求是,要在应用程序里面对Widget上的字体大小和颜色进行设置,并且在应用里面能够看到变化,这就需要由View来渲染和实现.但是View和RemoteViews事两个不相关的类,他们渲染的方式完全不一样,但是我又不想重新写一套View的渲染代码,这就想到了Adapter模式. 意图 将一个类的接口转换成客户希望的另一个接口.Adapter模式使原本由于接口不兼

设计模式之Composite模式(笔记)

组合模式:将对象组合成树形结构以表示"部分-总体"的层次结构. 组合模式使得用户对单个对象和组合对象的使用具有一致性. 适用场合:当需求中是体现部分与总体层次的结构时,以及希望用户能够忽略组合对象与单个对象的不同,统一地使用组合结构中的全部对象时,就应该考虑用组合模式. 首先定义一个Componet抽象类 public abstract class Component { protected String name; public Component(String name){ thi

设计模式:Adapter模式

目的:复用代码和兼容以前的代码 思想:提供一个中间层,做兼容 方法:“继承”的方式,“委托”的方式 继承关系图: 委托方式 继承方式 例子: //原来的打印 class Print { public: void PrintText(string str) { cout<< str ; } }; //新要求,打印加括号 class NewPrint { public: virtual void PrintText(string str) = 0; }; //适配层:委托方式 class Adap

设计模式之代理模式笔记

原文地址:点我 关键点: 静态代理: 实现被代理类的接口 构造注入 动态代理 reflect  高级码农必须深入理解的 扩展知识点 class.forname 使用这个不会产生新的实例, 只是为了加载 链接 初始化(静态) 我们大家一直用的spring 其中强大的功能aop就是基于这 注意点: 动态代理有个强制性要求 被代理的类必须时间了某一个接口, 或者本身就是接口(这个接口的实现类非必要) 三步骤 构造注入 实现invoke 获取代理实例 参数 类加载器 class对象的数组 当前对象 接口

菜鸟学设计模式系列笔记之适配器模式(adapter模式)

一.结构模式简介: 在面向对象软件系统中,每个类都承担了一定的职责,它们可以相互协作,实现一些复杂的功能 结构型模式关注的是如何将现有类或对象组织在一起形成更加强大的结构 不同的结构型模式从不同的角度来组合类和对象 1.结构模式描述如何将类或者对象结合在一起形成更大的结构 (1)类的结构模式:类的结构模式使用继承把类.接口等组合在一起,以形成更大的结构.当一个类从父类继承并实现某接口时,这个新的类就把父类的结构和接口的结构组合起来.类的结构模式是静态的. (2)对象的结构模式:对象的结构模式描述

【笔记】设计模式——装饰者模式

实现一个类似QQavator功能的代码 1.原始实现 1 //存在的问题: 2 //1.wear*方法出现重复代码,可以重构:实质上为代码结构一致,输出内容相同,可以通过在定义一个基类,在基类中定义抽象的Wear*,在子类中重写: 3 //2.倘若需求中新增某种服饰,需要修改Person类代码,不符合开放--封闭原则: 4 //3.客户端中代码暴露了具体装饰细节,理想情况下只需要提供装饰顺序,装饰细节封装起来: 5 class Person 6 { 7 private string name;