ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【三方件】Google Guava

2021-12-25 09:03:19  阅读:231  来源: 互联网

标签:三方 ... Google void oc originalCollection Override Guava public


Guava:Google工具类库,https://github.com/google/guava

 

内部设计模式

1、Builder模式:参数较多时,通过构造函数太多变量且部分参数可能不需要且多参数联合校验问题,解决方案:1)使用Builder模式;2)无参构造函数创建对象+ setXXX()方法来逐一设置需要的设置的成员变量。

  缓存部分:CacheBuilder

1  Cache<String, String> cache = CacheBuilder.newBuilder()
2             .initialCapacity(100)
3             .maximumSize(1000)
4             .expireAfterWrite(10, TimeUnit.MINUTES)
5             .build();
6 
7     cache.put("key1", "value1");
8     String value = cache.getIfPresent("key1");
9     System.out.println(value);

2、Wrapper模式(代理模式、装饰器、适配器):

  AddLoggingCollection<E> 基于代理模式,在原始Collection基础上增加add相关操作;

  该代理类没有直接实现原始接口而是通过集成ForwardXXX原因:为了简化Wrapper模式的代码实现,Guava提供一系列缺省的ForwardingXXXX类。用户在实现自己的Wrapper类的时候,基于缺省Forwarding类扩展,可只实现自己关心的方法,其他不关心的方法使用缺省Forwarding类实现,

public class AddLoggingCollection<E> extends ForwardingCollection<E> {
  private static final Logger logger = LoggerFactory.getLogger(AddLoggingCollection.class);
  private Collection<E> originalCollection;

  public AddLoggingCollection(Collection<E> originalCollection) {
    this.originalCollection = originalCollection;
  }

  @Override
  protected Collection delegate() {
    return this.originalCollection;
  }

  @Override
  public boolean add(E element) {
    logger.info("Add element: " + element);
    return this.delegate().add(element);
  }
View Code

  Wrapper常规实现框架:  

public interface Interf {
  void f1();
  void f2();
}
public class OriginalClass implements Interf {
  @Override
  public void f1() { //... }
  @Override
  public void f2() { //... }
}

public class WrapperClass implements Interf {
  private OriginalClass oc;
  public WrapperClass(OriginalClass oc) {
    this.oc = oc;
  }
  @Override
  public void f1() {
    //...附加功能...
    this.oc.f1();
    //...附加功能...
  }
  @Override
  public void f2() {
    this.oc.f2();
  }
}
View Code

 

  

  

 

 

标签:三方,...,Google,void,oc,originalCollection,Override,Guava,public
来源: https://www.cnblogs.com/clarino/p/15729803.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有