标签:三方 ... 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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。