博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我理解的--java适配器模式
阅读量:6245 次
发布时间:2019-06-22

本文共 957 字,大约阅读时间需要 3 分钟。

hot3.png

适配器理解起来有点问题,网上大多都是插座的例子也是出自设计模式一书。分为类和对象适配器。过程是:已有的类---------》适配器-----------》需要的类(接口)。

功能用到的还是原来的类的函数,只是在外面包装了一下,这有点像代理模式。

把原有的类作为参数传给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中工作。

也就是说:实现的功能还是原来的类的功能。只是实现了代码的复用。

理解不到的地方请指正

转载于:https://my.oschina.net/liuxinquan/blog/648006

你可能感兴趣的文章
总结第八天
查看>>
向空对象添加数据以及for in 遍历
查看>>
基础才是重中之重~理解内存中的栈和堆
查看>>
js错误问题 The operation is insecure.
查看>>
第四章 表达式
查看>>
Python数值计算:一 使用Pylab绘图(3)
查看>>
python爬虫知识点总结(十八)Scrapy框架基本使用
查看>>
限制textarea的字数(包括复制粘贴)
查看>>
ArcGIS Server中的各种服务
查看>>
HIVE: Transform应用实例
查看>>
Some examples about how to write anonymous method and lambda expression
查看>>
linux下可以禁用的一些服务
查看>>
aria2的下载配置
查看>>
C++扬帆远航——14(求两个数的最大公约数)
查看>>
django-blog-zinna搭建个人blog
查看>>
as3 文本竖排效果实现
查看>>
Window下Eclipse+Tomcat远程调试
查看>>
夜间模式的开启与关闭,父模板的制作
查看>>
2016/4/19
查看>>
计算一元二次方程的根
查看>>