设计模式学习(五) 适配器模式

结构型模式:

---  核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题

---  分类:

  适配器模式,代理模式,桥接模式,装饰模式,组合模式,外观模式,享元模式


适配器模式:

原理:

-- 将一个类接口转换成客户希望的另外一个接口。

优点:

Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以在一起工作

模式中的角色:

  • 目标接口(Target): 客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口
  • 需要适配的类(Adaptee):需要适配的类或者适配者类
  • 适配器(Adapter):通过包装一个需要适配的对象。把原接口转换成目标接口

实现方式:

1:类适配器:

package com.lp.adpater;

public class Adapter extends Adaptee implements Target  {

    @Override
    public void handleReq() {
        super.request();
    }

}

类适配器

2:对象适配器:

package com.lp.adpater;

public class Adaptee {
    public void request(){
        System.out.println("可以完成客户需要的功能");
    }
}

需要适配的类

package com.lp.adpater;

public interface Target {
    void handleReq();
}

目标接口

package com.lp.adpater;

public class Adapter implements Target  {

    private Adaptee adaptee;
    @Override
    public void handleReq() {
        adaptee.request();
    }
    public Adapter(Adaptee adaptee) {
        super();
        this.adaptee = adaptee;
    }

}

适配器

package com.lp.adpater;

//客户端类
//相当于一个笔记本电脑,只有usb接口
public class Client {

    public void test1(Target t){
        t.handleReq();
    }
    public static void main(String[] arg){

        Client c = new Client();
        Adaptee a = new Adaptee();
        Target t = new Adapter(a);
        c.test1(t);
    }

}

客户端

工作中的场景:

--  经常用来做旧系统改造和升级

--  如果我们的系统开发之后再也不需要维护,那么很多模式都是没必要的,但是不幸的是,事实却是维护一个系统的代价往往是开发一个系统的数倍

学习中的场景用到适配器模式的:

-- java.io.InputStremReader(InputStream)

-- java.io.OutputStremReader(OutputStream)

时间: 2024-12-29 12:53:39

设计模式学习(五) 适配器模式的相关文章

设计模式学习之适配器模式

学习完了创建型设计模式,接下来准备学习结构型设计模式.我的个人理解是,创建型设计模式是如何优雅的生成新的对象,而结构型设计模式是如何优雅的组织对象.针对不同的应用场景,组织对象的方式也可能不尽相同.换言之,先得有场景,才需要选择设计模式.这是理解结构型设计模式最重要的地方.曾经有人问我,这么多设计模式根本记不住,而且有些模式感觉差不多,容易混淆.诚然,死记硬背各种模式,很难灵活运用,千万不能拘泥于模式. 想象一下这样的场景,需要根据不同的配置文件,选择不同jar包中的某个类进行处理.问题来了,如

设计模式学习笔记-适配器模式(对象适配器)

一.概述 将一个类的接口转换为客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作: 二.模式中的角色 Target:定义客户端使用的与特定领域相关的接口: Clinet:与符合Target接口的对象协同: Adpatee:定义一个已经存在的接口,这个接口需要适配: Adpater:对Adpatee的接口与Target接口进行匹配: 三.UML类图 四.代码实现 /// <summary> /// 客户端期待的类 /// </summary&

设计模式学习笔记——适配器模式

1.特点:让接口不相容的类能协同工作.(亡羊补牢) 2.概念:适配器模式,将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 3.类图: 4.程序实现: /// <summary> /// 定义客户端期待的接口 /// </summary> public class Target { /// <summary> /// 使用virtual修饰以便子类可以重写 /// </summary>

设计模式学习笔记--适配器模式

1 using System; 2 3 namespace Adapter 4 { 5 /// <summary> 6 /// 作者:bzyzhang 7 /// 时间:2016/5/28 20:47:51 8 /// 博客地址:http://www.cnblogs.com/bzyzhang/ 9 /// Target说明:本代码版权归bzyzhang所有,使用时必须带上bzyzhang博客地址 10 /// </summary> 11 public class Target 12

设计模式学习目录

java版设计模式学习目录 适配器模式 建造者模式 版权声明:本文为博主原创文章,未经博主允许不得转载.

《Head First 设计模式》学习笔记——适配器模式 + 外观模式

在ADO.NET中,对于我们从数据库中取出的数据都要放到一个DataSet中,不管你是Access的数据库,还是SQL的数据库,或者是Oracle的数据库都要放到DataSet中..NET中并没有提供如:SqlDataSet.OleDbDataSet.OracleDataSet等,它只提供了一种DataSet就是用SqlDataAdapte等去填充数据:为什么这一个DataSet能存放不同的数据呢?就是有这些适配器来适配.----题记 设计模式 适配器模式:将一个类的接口,转换成客户期待的另一个

java/android 设计模式学习笔记(6)---适配器模式

这篇来介绍一下适配器模式(Adapter Pattern),适配器模式在开发中使用的频率也是很高的,像 ListView 和 RecyclerView 的 Adapter 等都是使用的适配器模式.在我们的实际生活中也有很多类似于适配器的例子,比如香港的插座和大陆的插座就是两种格式的,为了能够成功适配,一般会在中间加上一个电源适配器,形如: 这样就能够将原来不符合的现有系统和目标系统通过适配器成功连接. 说到底,适配器模式是将原来不兼容的两个类融合在一起,它有点类似于粘合剂,将不同的东西通过一种转

设计模式学习笔记之适配器模式

什么是适配器模式? 适配器模式(有时候也称包装样式或者包装)就是将一个类的接口适配成用户所期待的.一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中. 看一个我们日常生活中的图: 如果出国旅行,肯定会买一些国外的优质的电器回来,但是国外的电器插头可能是这样的.. 而国内的插座确实这样的.. 肯定是插不进去的..怎么办呢?神通广大的适配器就该出场了! 这下应该可以理解适配器是用来干嘛的了吧,其实设计模式中的适配器模式和这个道理是一样的. 我们来

设计模式学习总结

本文是对各处设计模式示例的总结概括和简化,主要参考 http://blog.csdn.net/zhangerqing/article/details/8194653 直接看本文估计比较枯燥无聊,因为没图~~??,建议对设计模式有兴趣的先看看上面的博文,或者基础比较好可直接移到最底下看下我的各模式一句话概括总结,有什么意见建议欢迎提出~~~~~~~~~~ 总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式.结构型模式,共七种:适配器模式.装饰

设计模式学习笔记(目录篇)

设计模式学习笔记(目录篇) 为了方便查看,特此将设计模式学习笔记系列单独做一个目录. 1   设计模式学习笔记(一:命令模式) 2   设计模式学习笔记(二:观察者模式) 3   设计模式学习笔记(三:装饰模式) 4   设计模式学习笔记(四:策略模式) 5   设计模式学习笔记(五:适配器模式) 6   设计模式学习笔记(六:责任链模式) 7   设计模式学习笔记(七:外观模式) 8   设计模式学习笔记(八:迭代器模式) 9   设计模式学习笔记(九:中介者模式) 10  设计模式学习笔记(