我有多个使用多个 Collection 参数的方法。
我想让事情更具体,所以我想使用转发装饰器
想到的第一个问题是:
- 使用 Forwarding Decoartor 是不是有点过头了,我是不是错过了更简单的东西,我的意思是这很简单,多亏了 Guava,但仍然如此?
如果转发装饰器是正确的路径,那么
到目前为止看起来还不错,但我不确定的一件事是如何取回基本集合(在这种情况下为 ImmutableSet)?
- 我是否只是创建一个返回“委托”的新方法(在接口和类中)?(如果是这样,什么是一个好的方法名称?)
- 还是还有更多?
在以下代码中,我将 ImmutableSet 保存为 setA。
编码:
界面:
package com.ps.experiment.forwarding;
import java.util.Collection;
public interface ISetA extends Set<String>{}
班级:
package com.ps.experiment.forwarding;
import com.google.common.collect.ForwardingSet;
import com.google.common.collect.ImmutableSet;
public class SetA extends ForwardingSet<String> implements ISetA
{
final ImmutableSet<String> delegate; // backing list
@Override
protected ImmutableSet<String> delegate()
{
return this.delegate;
}
private SetA(final ImmutableSet<String> strings)
{
this.delegate = strings;
}
public static ISetA of(final ImmutableSet<String> strings)
{
return new SetA(strings);
}
}