zoukankan      html  css  js  c++  java
  • 【结构型模式】《大话设计模式》——读后感 (12)在NBA我需要翻译?——适配器模式

    适配器模式:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能在一起工作的 那些类可以在一起工作了[DP]

    UML类图:

    简单模拟一下代码:

    //已存在的、具有特殊功能、但不符合我们既有的标准接口的类

    package com.sjmx.adapter;
    
    //已存在的、具有特殊功能、但不符合我们既有的标准接口的类
    public class Adaptee {
        
        public void specificRequest() {
            System.out.println("被适配类具有 特殊功能...");
        }
        
    }

    新规范接口:

    package com.sjmx.adapter;
    
    //目标接口,或称为标准接口
    public interface Target {
        public void request();
    }

    适配器类:

    package com.sjmx.adapter;
    
    //适配器类,直接关联被适配类,同时实现标准接口
    public class Adapter implements Target {
        
        // 直接关联被适配类
        private Adaptee adaptee;
            
        // 可以通过构造函数传入具体需要适配的被适配类对象
        public Adapter (Adaptee adaptee) {
            this.adaptee = adaptee;
        }
        
        public void request() {
            // 这里是使用委托的方式完成特殊功能
            this.adaptee.specificRequest();
        }
    
    }

    客户端:

    package com.sjmx.adapter;
    
    public class Client {
        
        public static void main(String[] args) {
            
            // 使用特殊功能类,即适配类,
            // 需要先创建一个被适配类的对象作为参数
            Target adapter = new Adapter(new Adaptee());
            adapter.request();
        }
    }

    适配器模式属于创建型模式,主要是为了解决两个已有接口之间不匹配的问题,我不需要考虑这些接口是怎么样实现的,也不考虑它们各自会如何演化,我的这种方式不需要对两个独立设计的类中任一个进行重新设计,使它们协同工作。我觉得适配器模式应该是处于软件生命周期的末端,针对很多已经开发好的功能进行调用,因为不方便去重新定义接口。

  • 相关阅读:
    将打开的网页以html格式下载到本地
    Shiro自定义realm实现密码验证及登录、密码加密注册、修改密码的验证
    JS或jsp获取Session中保存的值
    HTML添加上传图片并进行预览
    springMVC多图片压缩上传的实现
    DropZone图片上传控件的使用
    Wireshark安装使用及报文分析
    Spring—Document root element "beans", must match DOCTYPE root "null"分析及解决方法
    web.xml中如何设置配置文件的加载路径
    正则表达式的认识
  • 原文地址:https://www.cnblogs.com/chen1-kerr/p/7152727.html
Copyright © 2011-2022 走看看