• java笔记适配器模式的运用


    适配器模式的运用

    --如果朋友您想转载本文章请注明转载地址"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);
    }

    知识重在总结和梳理,只有不断地去学习并运用,才能化为自己的东西。由于本人进阶猿类时间尚短,故此博客即是我学习,工作的笔记,也是和大家交流,相互提升技术的平台~希望大家不吝赐教~~ --但管努力,莫问前程,事在人为,功不唐捐。--和佑博客园
  • 相关阅读:
    Flagger on ASM——基于Mixerless Telemetry实现渐进式灰度发布系列 2 应用级扩缩容
    Flagger on ASM·基于Mixerless Telemetry实现渐进式灰度发布系列 1 遥测数据
    HTML特殊符号整理
    jq代替jsdom操作部分
    js操作html的基本方法
    使用for循环疑难问题
    使用盒子定位布局时margin和padding使用
    四使用浮动div布局
    解决Junit单元测试 找不到类 ----指定Java Build Path
    微信服务号申请、认证、认证后申请商家支付接口
  • 原文地址:https://www.cnblogs.com/XHJT/p/3884785.html
Copyright © 2020-2023  润新知