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 }
  • 相关阅读:
    Dual Boot WINDOWS 10 and KALI LINUX Easily STEP BY STEP GUIDE截图
    【Head First Servlets and JSP】笔记8:监听者
    【网络】TCP的流量控制
    【Nginx】I/O多路转接之select、poll、epoll
    【Nginx】ngx_event_core_module事件模块
    【网络】TCP协议
    【网络】运输层
    【APUE】进程间通信之FIFO
    【APUE】文件I/O
    【c++】c++一些基础面试题
  • 原文地址:https://www.cnblogs.com/gsbm/p/4784002.html
Copyright © 2011-2022 走看看