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

    适配器模式的定义

    适配器模式(Adapter Pattern)的定义如下:

    Convert the interface of a class into another interface clients expect.Adapter lets classes work

    together that couldn't otherwise because of incompatible interfaces.(将一个类的接口变换成客户

    端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。)

    适配器模式又叫做变压器模式,也叫做包装模式(Wrapper

    ● Target目标角色

    该角色定义把其他类转换为何种接口,也就是我们的期望接口

    ● Adaptee源角色

    你想把谁转换成目标角色,这个“谁”就是源角色,它是已经存在的、运行良好的类或对

    象,经过适配器角色的包装,它会成为一个崭新、靓丽的角色。

    ● Adapter适配器角色

    适配器模式的核心角色,其他两个角色都是已经存在的角色,而适配器角色是需要新建

    立的,它的职责非常简单:把源角色转换为目标角色,怎么转换?通过继承或是类关联的方

    式。

    目标角色

    public interface Target {

         //目标角色有自己的方法

         public void request();

    }

    目标角色是一个已经在正式运行的角色,你不可能去修改角色中的方法,你能做的就是

    如何去实现接口中的方法,而且通常情况下,目标角色是一个接口或者是抽象类,一般不会

    是实现类。

    目标角色的实现类

    public class ConcreteTarget implements Target {

         public void request() {

                 System.out.println("if you need any help,pls call me!");   }

    }

    源角色也是已经在服役状态(当然,非要新建立一个源角色,然后套用适配器模式,那

    也没有任何问题),它是一个正常的类

    源角色

    public class Adaptee {

         //原有的业务逻辑

         public void doSomething(){

                 System.out.println("I'm kind of busy,leave me alone,pls!");

         }

    }

    适配器角色

    public class Adapter extends Adaptee implements Target {

         public void request() {

                 super.doSomething();

         }

    }

    场景类

    public class Client {

         public static void main(String[] args) {

                 //原有的业务逻辑

                 Target target = new ConcreteTarget();

                 target.request();

                 //现在增加了适配器角色后的业务逻辑

                 Target target2 = new Adapter();

                 target2.request();

         }

    }

    适配器模式的优点

    ● 适配器模式可以让两个没有任何关系的类在一起运行,只要适配器这个角色能够搞定

    他们就成。

    ● 增加了类的透明性

    ● 提高了类的复用度

    源角色在原有的系统中还是可以正常使用,而在目标角色中也可以充当新的演员。

    ● 灵活性非常好

  • 相关阅读:
    [快捷键的使用] IntelliJ IDEA 将数据库里面的表转化为对象
    Mybatis事物浅谈
    CentOS7系统局域网内配置本地yum源解决cannot find a valid baseurl for repo
    CentOS6.5系统解决中文乱码问题
    tomcat启动报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
    zabbix3.4.8中提示host [4gronghe_110] not found
    CentOS7.6系统安装详解(含真机装系统的采坑之旅)!
    windows server 2012 R2修改默认远程端口
    两个div并排,右边div固定宽度,左边宽度自适应
    两个div并排,左边div固定宽度,右边宽度自适应
  • 原文地址:https://www.cnblogs.com/future-zmy/p/6284390.html
Copyright © 2011-2022 走看看