栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

实例解析Java设计模式编程中的适配器模式使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实例解析Java设计模式编程中的适配器模式使用

平时我们会经常碰到这样的情况,有了两个现成的类,它们之间没有什么联系,但是我们现在既想用其中一个类的方法,同时也想用另外一个类的方法。有一个解决方法是,修改它们各自的接口,但是这是我们最不愿意看到的。这个时候Adapter模式就会派上用场了。

Adapter模式也叫适配器模式,是由GoF提出的23种设计模式的一种。Adapter模式是构造型模式之一,通过Adapter模式,可以改变已有类(或外部类)的接口形式。
适配器 模式 有三种方式,一种是对象适配器,一种是类适配器, 一种是接口适配器
以下举例说明:
1.类适配器

类图

public class DrawRectangle {//画方 
  public void drawRectangle(String msg) { 
    System.out.println("draw Rectangle: " + msg); 
  } 
} 

public interface IDrawCircle {//画圆的接口 
  void drawCircle(); 
} 


 
public class DrawAdapter4Class extends DrawRectangle implements IDrawCircle {//既能画方又能画圆 
 
  @Override 
  public void drawCircle() { 
    System.out.println("DrawAdapter4Class: drawCircle"); 
  } 
   
} 

2.对象适配器

类图:

 
public class DrawAdapter4Object implements IDrawCircle {//既能画方又能画圆 
   
  private DrawRectangle drawRectangle; 
  public DrawAdapter4Object(DrawRectangle drawRectangle) { 
    this.drawRectangle = drawRectangle; 
  } 
   
  @Override 
  public void drawCircle() { 
    System.out.println("DrawAdapter4Object: drawcircle"); 
  } 
   
  public void drawRectangle(String msg) { 
    drawRectangle.drawRectangle(msg); 
  }  
   
} 

3.接口适配器
类图

 
public interface IDraw { 
  void drawCircle(); 
  void drawRectangle(); 
} 

 
public class DefaultDrawAdapter implements IDraw {//画方 画圆 皆为空实现 
 
  @Override 
  public void drawCircle() { 
     
  } 
 
  @Override 
  public void drawRectangle() { 
     
  } 
} 


public class Test { 
  public static void main(String[] args) { 
    //对象适配器 
    DrawAdapter4Object objAdapter = new DrawAdapter4Object(new DrawRectangle()); 
    objAdapter.drawCircle(); 
    objAdapter.drawRectangle(" in DrawAdapter4Object"); 
     
    System.out.println("--------------"); 
     
    //类适配器 
    DrawAdapter4Class clzAdapter = new DrawAdapter4Class(); 
    clzAdapter.drawCircle(); 
    clzAdapter.drawRectangle("in DrawAdapter4Class"); 
     
    System.out.println("--------------"); 
     
    //接口适配器 
    MyDrawAdapter myDrawAdapter = new MyDrawAdapter(); 
    myDrawAdapter.drawCircle(); 
    myDrawAdapter.drawRectangle(); 
  } 
   
  static class MyDrawAdapter extends DefaultDrawAdapter { 
 
    @Override 
    public void drawCircle() { 
      System.out.println("drawCircle in MyDrawAdapter"); 
    } 
     
  } 
} 


打印

DrawAdapter4Object: drawcircle 
draw Rectangle: in DrawAdapter4Object 
-------------- 
DrawAdapter4Class: drawCircle 
draw Rectangle: in DrawAdapter4Class 
-------------- 
drawCircle in MyDrawAdapter 


适配器模式的三个特点:

1 适配器对象实现原有接口
2 适配器对象组合一个实现新接口的对象(这个对象也可以不实现一个接口,只是一个单纯的对象)
3 对适配器原有接口方法的调用被委托给新接口的实例的特定方法

有人认为讲解设计模式的例子都太简单,看着感觉是那么回事,但是要是真想在项目开发中使用,还真是应用不到。其实我们不必在项目中刻意使用设计模式,而是应该从实际的设计问题出发,看哪个模式能解决我们的问题,就使用哪个模式。不要为了使用模式而使用模式,那样就舍本逐末了,一般情况下,只要遵循一定的设计原则就可以了,设计模式也是根据这些原则被总结出来的,熟悉了这些原则,模式自然而然就有了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/150133.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号