複数の Collection パラメーターを使用する複数のメソッドがあります。
物事をより具体的にしたかったので、Forwarding Decorator を使用することを考えました
頭に浮かぶ最初の質問は次のとおりです。
- Forwarding Decoartor を使用するのはやり過ぎですか? もっと単純なものが欠けていますか? Guava のおかげでこれは非常に単純ですが、それでも?
Forwarding Decorator が正しいパスである場合
これまでのところ問題ないようですが、よくわからないことの 1 つは、ベース コレクション (この場合は ImmutableSet) を取得する方法です。
- "delegate" を返す新しいメソッドを (インターフェイスとクラスで) 作成するだけですか? (もしそうなら、良いメソッド名は何でしょうか?)
- それとももっと何かありますか?
次のコードでは、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);
}
}