• java适配器模式


    定义:

    属于结构型模式,其主要作用是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    比如你手机只有2.5mm接口(貌似就Nokia干的出来),但你只能买到3.5mm的,这时就需要买个适配器了(─.─|||
    意图宗旨:
    保留现有类所提供的服务,向客户提供接口,以满足客户的期望
    什么时候可以使用它:
    1你想使用一个已经存在的类,而它的接口不符合你的需求。没有2.5mm
    2你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
    3你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口——仅适用于对象Adapter。

    如何实现:
    1类适配器

    复制代码
     1 public class Adapter extends Adaptee implements Target{
     2     @Override
     3     public void getHeadset2() {
     4         this.getHeadset3();
     5     }
     6     public static void main(String args[]){
     7         Target target = new Adapter(); 
     8         target.getHeadset2();
     9     }
    10 }
    11 interface Target{
    12     void getHeadset2();
    13 }
    14 class Adaptee{
    15     public void getHeadset3(){
    16         System.out.println("我是3.5mm的耳机哦");
    17     }
    18 }
    复制代码

    2对象适配器

    复制代码
     1 public class Adapter implements Target{
     2     private Adaptee adaptee ;
     3     public Adapter() {
     4         super();
     5         this.adaptee = new Adaptee();
     6     }
     7     @Override
     8     public void getHeadset2() {
     9         adaptee.getHeadset3();
    10     }
    11     public static void main(String args[]){
    12         Target target = new Adapter(); 
    13         target.getHeadset2();
    14     }
    15 }
    16 interface Target{
    17     void getHeadset2();
    18 }
    19 class Adaptee{
    20     public void getHeadset3(){
    21         System.out.println("我是3.5mm的耳机哦");
    22     }
    23 }
    复制代码

    对象的适配器模式的不同之处在于Adapter角色封装了Adaptee角色,而不像类的适配器模式所采取的继承方式。其原理基本上是相似的
    3缺省适配器模式
    缺省适配器模式是一种特殊的适配器模式,但这个适配器是由一个抽象类实现的,并且在抽象类中要实现目标接口中所规定的所有方法,但很多方法的实现都是空方法。而具体的子类都要继承此抽象类。

  • 相关阅读:
    从yield关键字看IEnumerable和Collection的区别
    弹出框Fancybox使用详解
    几个不错的JQuery UI框架
    解决 IE6 position:fixed 固定定位问题
    autocomplete 应用(搜索提示框)
    HTML5 基础
    Cookie原理
    escape()、encodeURI()、encodeURIComponent()区别详解
    顶回Top
    移植mavlink协议到STM32详细教程
  • 原文地址:https://www.cnblogs.com/yangmengdx3/p/4313156.html
Copyright © 2020-2023  润新知