zoukankan      html  css  js  c++  java
  • 适配器模式

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

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

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

    (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 }
  • 相关阅读:
    处理客户端无法及时更新js、css
    关于JQ判断单选复选被选中
    一路风景,一路欣赏,一路有你
    Adobe Dreamweaver CC 2015新功能
    Eclipse导出APK文件报错 android lint problem
    swift2.0 计算圆面积
    zendStudio连接远程服务器报错java.net.SocketException
    IOS tableview 消除 分割线短 15 像素 ios8方法 swift版
    应用之间调用 UIApplication类的OpenURL方法
    iOS8 今日扩展
  • 原文地址:https://www.cnblogs.com/gsbm/p/4784002.html
Copyright © 2011-2022 走看看