JDK中的适配器模式(1)-------------【Java基础】

适配器模式在JDK中的使用,大概有这些

java.util.Arrays     #asList()

javax.swing.JTable     (TableModel)

java.io.InputStreamReader     (InputStream)

java.io.OutputStreamWriter     (OutputStream)

javax.xml.bind.annotation.adapters.XmlAdapter     #marshal()

javax.xml.bind.annotation.adapters.XmlAdapter     #unmarshal()

 

 

一开始,我认为(潜意识)适配器模式就是继承接口,在不同的子类中有不同的实现。

但是,我看到的是,

@SafeVarargs
    @SuppressWarnings("varargs")
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

 

接着看下ArrayList在哪,按住ctrl+左击,

 

额,怎么看都和我想象的适配器模式不同哎。

一不小心翻到《Java与模式》  第22章 适配器\(Adapter\)模式 ,

 

 

原来,适配器模式有两种,分别为:类适配器和对象适配器。如下图,(左为类适配器,右为对象适配器)

 

那么,

看到我画的红圈圈吗,知道它们之间的区别是什么吗?

答案:空心三角,其实是用例与用例之间的关系;而箭头则是角色与用例的关系;

 

 

那么这里应该是类适配器。至于为什么,你先看,

 

这个是对象适配器的,别搞混了。。。

 

不知道你对适配器模式清晰没。。。这本书超好的。。。

 

额外的知识点:

  • java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用。
  • Arrays.asList() 方法使用场景

  Arrays工具类提供了一个方法asList, 使用该方法可以将一个变长参数或者数组转换成List 。但是,生成的List的长度是固定的;能够进行修改操作(比如,修改某个位置的元素);不能执行影响长度的操作(如add、remove等操作),否则会抛出UnsupportedOperationException异常。

  所以 Arrays.asList 比较适合那些已经有数组数据或者一些元素,而需要快速构建一个List,只用于读取操作,而不进行添加或删除操作的场景。

 

如果你还不了解的话,可以接着看下篇。

 

参考资料:

JDK1.8源码(四)——java.util.Arrays 类

JDK里的设计模式

Java与模式

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值