`
kang
  • 浏览: 474517 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

结构模式之单向适配器模式Adapter

阅读更多

<!----><!----> <!---->

 

单向适配器模式:

 

适用场合:

 

假设现在有两个类:

class A {public void funA() {/*A的代码*/}}

class B {public void funB() {/*B的代码*/}}

这两个模块本来没有任何关系,但是现在应用中有这样的需求:

A对象调用funA方法时,一定要同时调用B的funB方法,但不允许修改源代码(即不允许修改类A或者类B的代码)

 

这种场景下,可以考虑使用适配器模式。


下面的代码对应讲的是图像处理软件在原先已经清晰化处理的基础上再进行去噪声处理的例子:

 

 

package com.javaeye.kang.adapter;

 

/**

  * 单项 适配器模式

  * 如果将 B 接到 A 上用(在原先 像清晰化的基 上再去噪声), A B

  * 要点是: 承方法

  */

class A {

      public void funA() {

            System. out .println( " 像清晰化! " );

      }

}

 

class B {

      public void funB () {

            System. out .println( " 像去噪声! " );

      }

}

 

// A 展,以后将 SubA 当成 A 来使用

// SubA funA 方法中增加 B funB 方法

class SubA extends A {

      public void funA() {

            super .funA();

            B b = new B();

            b.funB ();

      }

}

 

public class AdapterTest {

      public static void main(String[] args) {

            SubA subA = new SubA();

            subA.funA();

      }

}

 

测试结果:

像清晰化!

像去噪声!

 

 

 

改进: 面向接口编程

 

package com.javaeye.kang.adapter;

 

/**

  * 单项 适配器模式

  * 面向接口

  * 如果将 B 接到 A 上用(在原先 像清晰化的基 上再去噪声), A B

  * 要点是: 承方法

  */

 

class A {

      public void funA() {

            System. out .println( " 像清晰化! " );

      }

}

 

// 面向接口 程,噪声 理接口

// 使用接口来管理所有的 展模 (被 方模 可能 行互相切

interface YawpDispose {

      public abstract void yawpDispose();

}

 

class OldYawpDispose implements YawpDispose {

      public void yawpDispose() {

            System. out .println( " 像去噪声老算法! " );

      }

}

 

class NewYawpDispose implements YawpDispose {

      public void yawpDispose() {

            System. out .println( " 像去噪声新算法! " );

      }

}

 

// A 展,以后将 SubA 当成 A 来使用

// SubA funA 方法中增加 B funB 方法

class SubA extends A {

      // 完全面向接口 程,可以将 YawpDispose 的任何 实现类对 象引 来(可以使用 spring 象注入)

      private YawpDispose yawpDispos ;

      public SubA(YawpDispose yawpDispos) {

            this . yawpDispos = yawpDispos;

      }

     

      public void funA() {

            super .funA(); // 注意: 句代 可以去掉,假如去掉的 ,就是功能替

            // (不再使用 像清晰化功能了,而是只是使用下面的去噪声功能了)

            yawpDispos .yawpDispose();

      }

}

 

// 端、最 使用方

public class AdapterTest {

      public static void main(String[] args) {

            // 想使用 像去噪声老算法就 new OldYawpDispose() ,想使用新算法就 new NewYawpDispose ()

            // 下面 了多 ,可 充性比

            YawpDispose yawpDispos = new OldYawpDispose();

            // 将去噪声 理的 SubA 象中去

            SubA subA = new SubA(yawpDispos);

            subA.funA();

      }

}

 

测试结果:

像清晰化!

像去噪声老算法!

 

 

  • 描述: 回顾创建模式,开始结构模式
  • 大小: 32.5 KB
  • 描述: 适配器模式
  • 大小: 134.7 KB
  • 描述: 单向适配器模式要点
  • 大小: 89.5 KB
分享到:
评论

相关推荐

    网络游戏-单向适配器的动态网络配置.zip

    首先,单向适配器(One-Way Adapter)是一种软件设计模式,常用于在网络游戏中隔离不同的组件,使它们能够以统一的方式交互,即使这些组件可能具有不同的接口和通信协议。在动态网络配置的场景下,单向适配器的作用...

    Android 适配器模式应用及设计原理

    适配器又分为单向适配器和双向适配器,在 android 中前者使用的比较频繁。比较常见的实现方式是:首先定义一个适配类,内部定义一个私有的需要适配的对象,该类提供一个构造函数,将该对象的一个实例作为参数传入,...

    设计模式图示,帮助学习设计模式

    - **适配器模式(Adapter)**:通过适配器类,使得原本不兼容的类可以协同工作。分为单向和双向适配器。 - **组合模式(Composite)**:将对象组织成树形结构,允许用户对单个对象和组合对象进行一致的操作。 - *...

    设计模式介绍,欢迎下载

    ### 设计模式简介 设计模式是在软件工程领域中,针对特定问题所提出的...无论是工厂模式、策略模式还是适配器模式,每种模式都有其独特的应用场景和优势,理解并掌握它们对于任何一位软件工程师来说都是非常重要的。

    App 架构使用swift 进行ios 架构

    Model-Adapter-View-Binder(MAVB)模式通过适配器和绑定器解耦Model和View之间的直接交互,提高了组件的复用性和可测试性。最后,Elm架构(TEA)是一种响应式架构模式,它通过单向数据流和纯函数来提高应用的可靠性...

    VirtualBox虚拟机网卡设置

    **定义**: NAT模式是最常用的网络模式之一,它允许虚拟机通过主机连接到外部网络。在这种模式下,虚拟机对外部网络来说是不可见的,所有的网络请求都会被主机上的NAT服务拦截并转发。 **虚拟机与主机的关系**: - **...

    react-player-adapter:React 应用程序的适配器组件,可以轻松与 VersalPlayerAPI 实例集成

    保存给玩家的所有数据都通过 props(是的,单向)流回到包裹的组件中。 PlayerAdapter接受一个名为propertySheets的道具,其中包含您的应用所需的属性表架构。 属性表中的数据将与其他数据一起通过props流回您的...

    design-pattern:完成任务的方式,只是方程式,算法,过程或统计模型。与软件语言无关,它们以以下方式实现

    结构型模式涉及如何组合类和对象以形成更大的结构,例如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy)等,这些模式帮助我们在不修改原有代码的情况下扩展功能。行为型模式则关注对象之间的...

    spring integration同步数据库数据

    2. **事件驱动的模型**:Spring Integration基于消息驱动的设计模式,因此JDBC适配器会生成一个消息,每个消息代表数据库查询的结果行。这些消息可以被其他处理链(如服务 activator 或 transformer)消费,进行...

    EX1 - File to IDoc.pdf

    8. IDoc适配器(IDoc Adapter):负责接收适配过的XML消息,并将其转换为SAP内部使用的IDoc格式,最后把IDoc数据传送到后端的R/3系统中。 9. BAPI:是SAP提供的用于特定业务操作的接口函数。例如,本练习中将使用...

    Android-双方向的列表侧边顶部菜单不变其他实现双向滚动

    默认的LinearLayoutManager仅支持单向滚动,而GridLayoutManager虽然支持行和列的滚动,但不满足本项目需求的头部和侧边栏固定。因此,我们需要创建一个继承自RecyclerView.LayoutManager的子类,重写其计算和布局...

    基于ssm+vue社区团购系统.zip

    2. SpringMVC:学习控制器(Controller)、模型(Model)、视图(View)和适配器(Adapter)的设计模式。 3. MyBatis:掌握SQL映射文件的编写,动态SQL的使用,以及与Java对象的映射配置。 4. Vue.js:学习Vue的基本...

    C.STL中文版.pdf

    适配器(Adapter) 适配器用于改变容器或算法的行为。常见的适配器包括: - **容器适配器**:如`stack`、`queue`、`priority_queue`等。 - **算法适配器**:如`reverse_iterator`、`iterator_adaptor`等。 #### 7. ...

    超级有影响力霸气的Java面试题大全文档

     Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常...

    ice.rar_ICE_ICE 开发_ICE CORBA_corba_ice接口

    ICE支持多种通信模式,包括同步、异步、单向和事件驱动,可以根据应用需求选择最合适的通信方式。此外,ICE还提供了强大的安全特性,如身份验证、授权和加密,确保了分布式系统间的通信安全。 Ice.ppt很可能是一个...

    java学习心得

    2. **适配器(Adapter)**:连接数据源和UI视图的桥梁。 - **BaseAdapter**:自定义适配器的基础类。 - **ArrayAdapter**:适用于数组数据类型的适配器。 - **CursorAdapter**:用于展示数据库查询结果。 - **...

    Universal Serial Bus 4 Connection Manager Guide

    TMU配置对于增强单向模式,可能是指优化了单向数据传输的性能,比如在仅需要单向高速传输的场景下。 19. **Bandwidth Allocation during Path Setup**: 路径设置期间的带宽分配策略,确保了在连接建立时,带宽...

    recycling-center:将React性数据流带到RecyclerViews

    回收中心是一个旨在支持以下模式的库:使用不可变的ViewModels的React性单向数据流。 它将RxJava的React性数据流与RecyclerView的高效UI结合在一起,并通过“视图”部分和“视图模型”支持UI组合。 入门 回收中心...

    ADO.net 核心组件的通俗理解

    - **概念**:如同直接将水送达最终用户的单向输水管,专门用于读取数据,不支持数据的更新。 - **作用**:快速地读取只读数据流。 - **特点**:效率高,不支持数据更改,仅用于读取。 - **示例代码**: ```...

Global site tag (gtag.js) - Google Analytics