最近、私は興味をそそるビルダーのパターンを見つけました。BuilderPattern内のロジック
したがってEntity
を作成しますが、エンティティを返さないEntityBuilder
があります。
public void build();
は代わりに、build()
方法内側、それを格納するCacheImplementation
インスタンスに、作成した新しいオブジェクト、Entity
を提供し:ここでメソッドのシグネチャです。 注:CacheImpl
は、ビルダーのコンストラクターに注入されます。
public void build(){
//create new entity
cacheImplementation.add(entity);
}
これはベストプラクティスのように聞こえますか?
その後編集0
public interface EntityBuilder {
void setProperty0(PropertyObject propertyObject0);
void setProperty1(PropertyObject propertyObject1);
void setProperty2(PropertyObject propertyObject2);
//...
void build();
}
public class EntityBuilderImpl implements EntityBuilder {
PropertyObject propertyObject0;
PropertyObject propertyObject1;
PropertyObject propertyObject2;
//...
// setters for all properties
@Override
public void build(){
//create new entity
cacheImplementation.add(entity);
}
}
ビルダーは、次のように使用します。
public class EntityProcessor{
private EntityBuilderFactory entityBuilderFactory;//initialized in constructor
void process(EntityDetails entityDetails){
EntityBuilder entityBuilder = this.entityBuilderFactory.getNewEntitytBuilder();
//..
// entityBuilder.set all properties from entityDetails
entityBuilder.build();
}
}
注:CacheImplでインスタンスだけN秒ごとにアクセスしているList<>
内のエンティティを格納します。
伝統的なデザインパターンのバリエーションは素晴らしいと思います。私は何を意味しているかを見るために小さなコードスニペットを追加しました。これは裁判に十分ですか? – VladLucian
いいえ、十分ではありません。より興味深い部分は、ビルダーとキャッシュの使用です。キャッシュとしてのリストが奇妙に聞こえます。私は地図を期待していた。 – janos
これはリストではなく、処理が開始されるたびにN秒でクリアされるSetです。ビルダーの使い方をもう一度編集しました。 – VladLucian