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

结构模式之双向适配器模式2

阅读更多

<!---->

对前面一篇文章《双向适配器模式1》中的程序进行改进,面向接口编程:

 

说明:试了很多次,这两个就是不能合在一篇中发布(第二部分只显示上面的部分),真是邪门了,只好分成两篇。

 

package com.javaeye.kang.adapter;

 

 

/**

  * 双向适配器模式

  * :面向接口

  */

 

// 接口

interface IA {

      public abstract void funA1();

      public abstract void funA2();

}

 

class A implements IA {

      public void funA1() {

            System. out .println( "A.funA1()" );

      }

      public void funA2() {

            System. out .println( "A.funA2()" );

      }

}

 

// 接口

interface IB {

      public abstract void funB1();

      public abstract void funB2();

}

 

class B implements IB {

      public void funB1() {

            System. out .println( "B.funB1()" );

      }

      public void funB2() {

            System. out .println( "B.funB2()" );

      }

}

 

// A B ,将 AB 当成 A B 来使用

//AB 时实现 A 接口和 B 接口

class AB implements IA,IB {

 

      private IA ia ;

      private IB ib ;

     

      public void setIa(IA ia) {

            this . ia = ia;

      }

      public void setIb(IB ib) {

            this . ib = ib;

      }

     

      // 功能

      //A 用了 A funA1() 方法后,同 时调 B funB2() 方法

      public void funA1() {

            ia .funA1(); // 明:去掉本句 是功能替

            ib .funB1();

      }

      //B 用了 B funB2() 方法后,同 时调 A funA2() 方法

      public void funB2() {

            ib .funB2();

            ia .funA2();

      }

     

      // 重写其他功能,以免

      public void funA2() {

            ia .funA2();

      }

      public void funB1() {

            ib .funB1();

      }

}

 

public class AdapterTest {

      public static void main(String []args) {

            AB ab = new AB();

            // 入两个 的引用,多 IA ia = new A()

            ab.setIa( new A());

            ab.setIb( new B());

            // 端使用

            ab.funA1();

            ab.funB2();

      }

}

 

测试结果:

A.funA1()

B.funB1()

B.funB2()

A.funA2()

 

 

 

 

  • 描述: 双向适配器要点
  • 大小: 76.7 KB
  • 描述: 双向适配器模式练习(功能替换)
  • 大小: 99.9 KB
  • 描述: 适配器模式小结
  • 大小: 80.8 KB
分享到:
评论

相关推荐

    结构型模式之适配器模式

    文章目录适配器模式的定义与特点适配器模式的结构适配器模式的实现类适配器模式对象适配器模式应用场景 在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文...

    UML和模式应用(架构师必备).part02.rar

    第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...

    UML和模式应用(架构师必备).part06.rar

    第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...

    UML和模式应用(架构师必备).part01.rar

    第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...

    UML和模式应用(架构师必备).part07.rar

    第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...

    UML和模式应用(架构师必备).part03.rar

    第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...

    UML和模式应用(架构师必备).part04.rar

    第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...

    UML和模式应用(架构师必备).part08.rar

    第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...

    UML和模式应用(架构师必备).part05.rar

    第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...

    asp.net知识库

    2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ...

    精通并发与netty视频教程(2018)视频教程

    75_适配器模式与模板方法模式在入站处理器中的应用 76_Netty项目开发过程中常见且重要事项分析 77_Java NIO Buffer总结回顾与难点拓展 78_Netty数据容器ByteBuf底层数据结构深度剖析 79_Netty的ByteBuf底层实现大...

    精通并发与 netty 视频教程(2018)视频教程

    Channel选择器工厂与轮询算法及注册底层实现 72_Netty线程模型深度解读与架构设计原则 73_Netty底层架构系统总结与应用实践 74_Netty对于异步读写操作的架构思想与观察者模式的重要应用 75_适配器模式与模板方法模式...

Global site tag (gtag.js) - Google Analytics