我理解的--java适配器模式
2016-03-26 23:54
393 查看
适配器理解起来有点问题,网上大多都是插座的例子也是出自设计模式一书。分为类和对象适配器。过程是:已有的类---------》适配器-----------》需要的类(接口)。
功能用到的还是原来的类的函数,只是在外面包装了一下,这有点像代理模式。
把原有的类作为参数传给adapter(适配器),适配器同时又继承了已有的接口,就是用适配器去把已有的类包装成需要的类。
有几点:
1.为什么去包装?
2.怎么包装。(继承和组合)
我的理解:::他包装后更多的不是关注实现的功能,比如print("a")还是print("b").而是代码的复用。需要的接口(target)只有固定的函数。比如print,具体里面的实现是什么,他不关心。你把现有的A类或B类或。。。,包装后,都只有一个print方法,这在工程中就不用改变了,实现了代码的复用。
已有的A类:
已有的B类:
注意上面适配器可以包装B,把A换成B即可。
测试:
结果:在A中工作。
换成B后:
结果:在B中工作。
也就是说:实现的功能还是原来的类的功能。只是实现了代码的复用。
理解不到的地方请指正
功能用到的还是原来的类的函数,只是在外面包装了一下,这有点像代理模式。
把原有的类作为参数传给adapter(适配器),适配器同时又继承了已有的接口,就是用适配器去把已有的类包装成需要的类。
有几点:
1.为什么去包装?
2.怎么包装。(继承和组合)
我的理解:::他包装后更多的不是关注实现的功能,比如print("a")还是print("b").而是代码的复用。需要的接口(target)只有固定的函数。比如print,具体里面的实现是什么,他不关心。你把现有的A类或B类或。。。,包装后,都只有一个print方法,这在工程中就不用改变了,实现了代码的复用。
已有的A类:
class A { public void printA() { System.out.println("在A中工作"); } }
已有的B类:
class B { public void printB() { System.out.println("在B中工作"); } }需要的接口:
public interface Target { void print(); }适配adapter
class Adapter implements Target { A a; Adapter(A a) { this.a = a; } @Override public void print() { a.printA(); } }
注意上面适配器可以包装B,把A换成B即可。
测试:
class Test { public static void main(String[] args) { A a = new A(); Target target = new Adapter(a); target.print(); } }
结果:在A中工作。
换成B后:
结果:在B中工作。
也就是说:实现的功能还是原来的类的功能。只是实现了代码的复用。
理解不到的地方请指正
相关文章推荐
- Spring Batch(7): 并行与扩展
- 常用加密算法的Java实现
- Java学习之字符串类String(一)
- Java——Selector
- 解决myeclipse过期问题
- Java——字符集:Charset
- 对一致性Hash算法,Java代码实现的深入研究
- java中的BigInteger(很好很强大)(转)
- JDK源码分析-ArrayList分析
- 码农小汪-struts2学习10-上传下载文件
- 什么是java path环境变量
- java学习笔记16.3.26
- MyEclipse------PreparedStatement使用方法
- Java-ConcurrentHashMap源码分析
- JAVA多线程——线程运行时异常的处理
- JAVAEE 框架 2016-3-26
- java中的Arrays类
- 牛客网每日打卡-Java基础-20160326
- 学习javaEE每一天2016.3.26
- Hibernate配置及持久化操作(CRUD)