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

    左图是:对象结构型适配器模式;右图是:类结构型适配器模式。常用的是第一种方式。

    对象结构型适配器模式与代理模式的UML类图比较接近,对比的看一下:

    左图是:对象结构型适配器模式;右图是:代理模式。

    适配器模式(Adapter)定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

    适配器模式的优点有:

    1、客户端通过适配器可以透明地调用目标接口。

    2、复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。

    3、将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。

    目标对象(被适配的对象):

    1 public class Adaptee {
    2     public void specificRequest() {
    3         System.out.println("原组件执行");
    4     }
    5 }

    对象结构适配器:

     1 public interface Target {
     2     public void request();
     3 }
     4 
     5 public class Adapter implements Target {
     6     private Adaptee adaptee;
     7 
     8     public Adapter(Adaptee adaptee) {
     9         this.adaptee = adaptee;
    10     }
    11 
    12     @Override
    13     public void request() {
    14         // TODO Auto-generated method stub
    15         adaptee.specificRequest();
    16     }
    17 }

    类结构适配器:

    1 public class ClassAdapter extends Adaptee implements Target {
    2     @Override
    3     public void request() {
    4         // TODO Auto-generated method stub
    5         specificRequest();
    6     }
    7 }

    调用方式:

     1 public class Client {
     2     public static void main(String[] args) {
     3         //类适配器
     4         Target target = new ClassAdapter();
     5         target.request();
     6         
     7         System.out.println("----------------");
     8         //被调用的目标对象
     9         Adaptee adaptee = new Adaptee();
    10         
    11         //适配器,左侧和右侧分别是两个“螺丝扣”
    12         Target adapter = new Adapter(adaptee);
    13         
    14         //信息通过adapter传输
    15         adapter.request();
    16     }
    17 }

    执行结果:

    通过调用适配器(Adapter)的request()方法,完成了对被适配对象(Adaptee)的specificRequest()方法的执行。

  • 相关阅读:
    Unity3D游戏-愤怒的小鸟游戏源码和教程(一)
    Unity插件-ShareSDK使用指南
    Unity 3D开发-C#脚本语言的一些基础用法
    Shader的函数公式以及使用的场景
    Shader的基本用法和语法结构
    iTween的用法总结
    Unity 3D游戏-消消乐(三消类)教程和源码
    Unity 3D游戏-NPC对话系统With XML
    XML教程、语法手册、数据读取方式大全
    ReSharper2017.3的列对齐、排版格式、列对齐错误的修复
  • 原文地址:https://www.cnblogs.com/asenyang/p/12111037.html
Copyright © 2011-2022 走看看