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

    【扩展】一个对象如果不存储实体状体以及对象之间的关系,该对象就叫做贫血对象,对应的领域模型就是贫血领域模型
    有实体状体和对象关系的模型就是充血领域模型

    适配器模式的定义:
    Convert the interface of a class into another interface clients expect. Adapter lets classes
    work together that couldn't otherwise bacause of incompatible interface.
    将一个类的接口变换成客户端期待的另一个接口,从而使原本因接口不匹配的而无法在一起工作的两个类
    能够在一起工作。

    适配器模式角色:
    1.Target角色:该角色定义把其他类转换为何种接口,也就是我们期望的接口
    2.Adaptee源角色:想要把谁转换为目标角色,它是已经存在的,运行良好的类或对象,经过适配器角色的
    包装,它会成为一个新的角色
    3.Adapter适配器角色:适配器模式的核心角色,其他两个角色都是已经存在的角色,而适配器角色是需要
    新建的,它的职责就是通过继承或类关联的方式把源角色转换为目标角色

    //目标角色:它是一个已经正式运行的角色,不需要去修改角色中的方法,只需要去实现接口中的方法,
    //而且通常情况下,目标角色是一个接口或抽象类
    public class interface Target{
        public void request();
    }
    //目标角色的实现类
    public class ConcreteTarget implements Traget{
        public void request(){
            //.....
        }
    }
    //源角色
    public class Adaptee{
        public void doSomething(){
            //....
        }
    }
    //适配器角色
    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();
        }
    }

    适配器模式的优点:
    1.适配器模式可以让两个没有任何关系的类在一起运行,只要适配器这个角色能够搞定它们就成
    2.增加了类的透明性
    3.提高了类的复用度
    4.灵活性非常好
    使用场景:
    适配器模式的应用场景只要记住一点就足够了:只要有动机修改一个已经投产中的接口时,适配器模式可能是
    最适合你的模式。比如系统扩展了,需要使用一个已有或新建立的类,但这个类不符合系统的接口,怎么办?使用
    适配器模式
    注意事项;适配器模式最好在详细设计阶段不要考虑它,它不是为了解决还处于开发阶段的问题,而是解决正在服
    役的项目问题

    以上说的是类适配器模式,以下类图为对象适配器,即将上面的继承关系改为了关联关系

    适配器模式是一个补偿模式,或者说是一个“补救”模式,通常用来解决接口不相容的问题

  • 相关阅读:
    tomcat服务器宕机解决方案
    @SpringBootApplication无法被解析引入
    记一次ajax交互问题
    记一次js之button问题
    非常简单的部署脚本(JavaWeb项目)和部署项目教程
    Docker实战(十)之分布式处理与大数据平台
    Docker实战(九)之数据库应用
    Docker实战(八)之Web服务与应用
    DevExpress.Build
    批处理 批量删除当前目录及子目录下多个指定的扩展名文件
  • 原文地址:https://www.cnblogs.com/liaojie970/p/5488964.html
Copyright © 2011-2022 走看看