<!---->
对前面一篇文章《双向适配器模式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
分享到:
相关推荐
文章目录适配器模式的定义与特点适配器模式的结构适配器模式的实现类适配器模式对象适配器模式应用场景 在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文...
第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...
第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...
第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...
第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...
第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...
第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...
第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...
第四部分 细化迭代2—更多模式 第22章 UML工具与视UML为蓝图 22.1 前向、逆向和双向工程 22.2 什么是有价值特性的常见报告 22.3 对工具有哪些期待 22.4 如果绘制了UML草图,如何在编码后更新该图形 22.5 参考...
2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ...
75_适配器模式与模板方法模式在入站处理器中的应用 76_Netty项目开发过程中常见且重要事项分析 77_Java NIO Buffer总结回顾与难点拓展 78_Netty数据容器ByteBuf底层数据结构深度剖析 79_Netty的ByteBuf底层实现大...
Channel选择器工厂与轮询算法及注册底层实现 72_Netty线程模型深度解读与架构设计原则 73_Netty底层架构系统总结与应用实践 74_Netty对于异步读写操作的架构思想与观察者模式的重要应用 75_适配器模式与模板方法模式...