码迷,mamicode.com
首页 > 其他好文 > 详细

适配器模式

时间:2015-09-05 22:09:43      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。

就好比插头的例子,有的插头是三个头,有的插头是两个头,三头插头要插到二孔的插座上,用一个三相到两相的转换器(适配器)就可以了。

适配器模式有三种:类的适配器,对象的适配器,接口的适配器。

(1)类的适配器模式:

 1 //目标接口
 2 interface Target{
 3     public void method1();
 4     public void method2();
 5 }
 6 
 7 //源类
 8 class Source{
 9     public void method1(){
10         //业务代码
11     }
12 }
13 
14 //具体适配器类
15 class Adapter extends Source implements Target{
16 
17     //源类中没有的方法
18     @Override
19     public void method2() {
20         //业务代码
21     }
22     
23 }
24 
25 public class MyTest {
26 
27     /**
28      * @param args
29      */
30     public static void main(String[] args) {
31         Target adapter = new Adapter();
32         adapter.method1();
33         adapter.method2();
34     }
35 
36 }

 

(2)对象的适配器模式:

 1 //目标接口
 2 interface Target{
 3     public void method1();
 4     public void method2();
 5 }
 6 
 7 //源类
 8 class Source{
 9     public void method1(){
10         //业务代码
11     }
12 }
13 
14 //具体适配器类
15 class Adapter implements Target{
16     
17     private Source source;
18     
19     public Adapter(Source source){
20         this.source = source;
21     }
22 
23     @Override
24     public void method1() {
25         source.method1();
26     }
27 
28     @Override
29     public void method2() {
30         //业务代码
31     }
32     
33 }
34 
35 public class MyTest {
36 
37     /**
38      * @param args
39      */
40     public static void main(String[] args) {
41         Target adapter = new Adapter(new Source());
42         adapter.method1();
43         adapter.method2();
44     }
45 
46 }

 

(3)接口的适配器模式:

 1 //源接口
 2 interface Source{
 3     public void method1();
 4     public void method2();
 5 }
 6 
 7 //抽象适配器类
 8 abstract class Adapter implements Source{
 9     public void method1(){}
10     public void method2(){}
11 }
12 
13 //具体适配器类
14 class Adapter1 extends Adapter{
15     public void method1(){
16         //业务代码
17     }
18 }
19 
20 class Adapter2 extends Adapter{
21     public void method2(){
22         //业务代码
23     }
24 }
25 
26 public class MyTest {
27 
28     /**
29      * @param args
30      */
31     public static void main(String[] args) {
32 
33     }
34 
35 }

 

适配器模式

标签:

原文地址:http://www.cnblogs.com/gsbm/p/4784002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!