码迷,mamicode.com
首页 > 其他好文 > 详细

guava源码阅读——collect.ForwardingCollection类

时间:2020-08-11 17:30:26      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:ash   改变   cti   forward   uav   div   功能   can   remove   

1.写在前面

在guava的collect包下,存在着许多的以Forwarding开头的类,这些类都用到了一个设计模式——装饰器模式。

为什么是装饰器模式?

装饰器模式是为已有功能动态的添加更多功能的一种方式。它允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

这种模式会创建一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供额外的功能。

 

2.阅读内容

collect.ForwardingCollection类

 

3.源码分析

 
@Override
 protected abstract Collection<E> delegate();

delegate是一个代理,通过它去转发到具体的类上。

@Override
 public Iterator<E> iterator() {
   return delegate().iterator();
 }
 
 @Override
 public int size() {
   return delegate().size();
 }
 
 @CanIgnoreReturnValue
 @Override
 public boolean removeAll(Collection<?> collection) {
   return delegate().removeAll(collection);
 }
 ......

可以看到,这些方法都是通过delegate()去调用到各自对应的方法上。

guava源码阅读——collect.ForwardingCollection类

标签:ash   改变   cti   forward   uav   div   功能   can   remove   

原文地址:https://www.cnblogs.com/ericz2j/p/13476719.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!