欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-01 11:55:28
适配器模式的主要作用是在新接口和老接口之间进行适配,通过将一个类的接口转换成客户期望的另一个接口,让原本不兼容的接口可以合作无间,本文以实例解析java设计模式编程中的适配...

适配器模式的主要作用是在新接口和老接口之间进行适配,通过将一个类的接口转换成客户期望的另一个接口,让原本不兼容的接口可以合作无间,本文以实例解析java设计模式编程中的适配器模式使用,需要的朋友可以参考下

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

p style="margin: 0px; padding: 5px 0px;"> adapter模式也叫适配器模式,是由gof提出的23种设计模式的一种。adapter模式是构造型模式之一,通过adapter模式,可以改变已有类(或外部类)的接口形式。

适配器 模式 有三种方式,一种是对象适配器,一种是类适配器, 一种是接口适配器

以下举例说明:

1.类适配器

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

public class drawrectangle {//画方 
 public void drawrectangle(string msg) { 
  system.out.println("draw rectangle: " + msg); 
 } 
} 
public interface idrawcircle {//画圆的接口 
 void drawcircle(); 
} 
/** 
 * 类适配器 使用对象继承的方式,是静态的定义方式 
 * @author stone 
 * 
 */
public class drawadapter4class extends drawrectangle implements idrawcircle {//既能画方又能画圆 
 @override
 public void drawcircle() { 
  system.out.println("drawadapter4class: drawcircle"); 
 }   
}

2.对象适配器

/** 
 * 对象适配器: 使用对象组合的方式,是动态组合的方式。 
 * 既能画方又能画圆 
 * @author stone 
 * drawadapter是适配器,drawrectangle属于adapter,是被适配者,适配器将被适配者和适配目标(drawcircle)进行适配 
 * 
 */
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 对适配器原有接口方法的调用被委托给新接口的实例的特定方法

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

希望本篇文章对您有所帮助