适配器模式的运用

--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3884785.html "谢谢--

主要应用:
可以在符合OCP原则(开笔原则)的基础上,为类增加新的功能。
在现有功能上添加新的功能时无须修改原有功能代码。

主要角色:
目标角色:就是期待得到的接口,如给汽车添加GPS的接口;
源角色:需要被增加功能的类或接口,如汽车类
适配器角色:新创建的类,在源角色的基础上实现了目标角色,如已经成功添加了GPS的汽车类

例子:
为汽车添加GPS功能
1.建立目标角色——添加GPS的接口
/**
* 定义GPS接口
*
* @author XIEHEJUN
*
*/
public interface GPS {
  public Point getLocation();
}

2.建立源角色——汽车类

/**
* 汽车实体类
*
* @author XIEHEJUN
*
*/
public class Car {
  private String name;
  private double speed;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public double getSpeed() {
    return speed;
  }

  public void setSpeed(double speed) {
    this.speed = speed;
  }

  @Override
  public String toString() {
    StringBuilder sbd =new StringBuilder();
    sbd.append("车主名称为:"+name+" ");
    sbd.append("车速为:"+speed+" ");
    return sbd.toString();
  }

}

3.适配器角色——为汽车添加GPS的类

/**
* 为汽车添加GPS
*
* @author XIEHEJUN
*
*/
public class CarAddGPS extends Car implements GPS {

  @Override
  public Point getLocation() {
    Point point = new Point();
    point.setLocation(super.getSpeed(), super.getSpeed());
    return point;
  }

  @Override
  public String toString() {
    StringBuilder sbd = new StringBuilder();
    sbd.append(super.toString());
    sbd.append(",坐标为(" + getLocation().x + "," + getLocation().y + ")");
    return sbd.toString();
  }
}
4.测试适配器类——main函数

public static void main(String[] args) {
  System.out.println("************创建普通汽车类**********");
  Car car = new Car();
  car.setName("李宏");
  car.setSpeed(60);
  System.out.println(car);
  System.out.println("************创建带有GPS的汽车类*******");
  CarAddGPS carGps = new CarAddGPS();
  carGps.setName("李小华");
  carGps.setSpeed(60);
  System.out.println(carGps);
}

java笔记--适配器模式的运用的更多相关文章

  1. 【设计模式】Java设计模式 - 适配器模式

    [设计模式]Java设计模式 - 适配器模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一 ...

  2. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

  3. Java设计模式——适配器模式

    JAVA 设计模式 适配器模式 用途 适配器模式 (Adapter) 将一个类的接口转换成客户希望的另外一个接口. Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适配器 ...

  4. java笔记00-目录

    --2013年7月26日17:49:59 学习java已久,趁最近有空,写一个总结: java笔记01-反射:

  5. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  6. 转 Java笔记:Java内存模型

    Java笔记:Java内存模型 2014.04.09 | Comments 1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记 ...

  7. servlet(6) - servlet总结 - 小易Java笔记

    垂阅前必看: 这都是我总结的我觉得是学习servlet应该掌握的,我在学习期间也做了一个博客项目来让所学的知识得以巩固.下面就是博客项目链接.前面的servlet相关的笔记总汇,还有就是我把觉得在学习 ...

  8. Java笔记 —— 继承

    Java笔记 -- 继承 h2{ color: #4ABCDE; } a{ text-decoration: none!important; } a:hover{ color: red !import ...

  9. Java笔记 —— 方法重载和方法重写

    Java笔记 -- 方法重载和方法重写 h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: red ...

随机推荐

  1. HoloLens开发手记 - Unity之World Anchor空间锚

    World Anchor空间锚提供了一种能够将物体保留在特定位置和旋转状态上的方法.这保证了全息对象的稳定性,同时提供了后续在真实世界中保持全息对象位置的能力.简单地说,你可以为全息物体来添加空间锚点 ...

  2. javascript中的闭包,超简单论述,保证小学生必懂

    js中的闭包已经有很多论断了,大家伙有没有听懂了,先引用一片比较高端 的 ”汤姆大叔“  深入理解JavaScript系列(16):闭包(Closures) 好了,为了引起大家的兴趣,先来小诗一首 v ...

  3. 扫描函数sweep

    groot.sweep(element,vm); element 为要扫描的代码片段,vm 对应的一个 groot.view 定义的 一个Vm的整体 扫面代码 groot.sweep = functi ...

  4. WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务

    在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主要说明在.NET的环境下,如何使用 WCF Data Se ...

  5. 序列化和反序列化的几种方式(DataContractSerializer)(二)

    DataContractSerializer 类 使用提供的数据协定,将类型实例序列化和反序列化为 XML 流或文档. 无法继承此类. 命名空间: System.Runtime.Serializati ...

  6. java 获取主机IP

    public class Chat extends JFrame { public static JTextField jt; public Chat(){ setLayout(new FlowLay ...

  7. Webform之Repeater中的单选和多选的应用以及前段JS的实现

    HTML中的代码 <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate&g ...

  8. text-align:justify_内容居中对齐

    一直发现text-align : justify这个对齐方式不好使,都不知道为什么么么哒: 因为两端对齐的这个行的结束要一个有空字符串或者别的不可见的字符,用户代理会把这个行的最后几个字符往右边拉,实 ...

  9. Java编程思想学习(九) 异常处理

    java的异常处理机制可以使程序有极好的容错性,让程序更加的健壮.所谓的异常,就是指的阻止当前方法或作用域继续执行的问题,,当程序运行时出现异常时,系统就会自动生成一个Exception对象来通知程序 ...

  10. codeforces 359D 二分答案+RMQ

    上学期刷过裸的RMQ模板题,不过那时候一直不理解>_< 其实RMQ很简单: 设f[i][j]表示从i开始的,长度为2^j的一段元素中的最小值or最大值 那么f[i][j]=min/max{ ...