Ostatnio natknąłem się na wzór, który mnie intrygował.Logika wewnątrz BuilderPattern
Tak, mam EntityBuilder
, który buduje Entity
, ale nie zwraca encji. Oto podpis metoda:
public void build();
Zamiast wewnątrz metody build()
, zapewnia nowy obiekt utworzony, tym Entity
, do CacheImplementation
przykład do zapisania. Uwaga: CacheImpl
jest wstrzykiwany do konstruktora konstruktora.
public void build(){
//create new entity
cacheImplementation.add(entity);
}
Czy to brzmi jak najlepsza praktyka?
Później edit 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);
}
}
Budowniczy stosowany jest w następujący sposób:
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();
}
}
Uwaga: instancja cacheImpl tylko przechowuje podmioty w List<>
która uzyskuje dostęp do co n sekund.
Wariacje tradycyjnych wzorów są przyjemne. Dodałem mały fragment kodu, aby zobaczyć, co mam na myśli. Czy wystarczy to osądzić? – VladLucian
Nie, za mało. Bardziej interesującą częścią będzie użycie budowniczego i pamięci podręcznej. Przy okazji lista jako cache brzmi dziwnie. Spodziewałem się mapy. – janos
To nie jest lista, jest to zestaw czyszczony w ciągu N sekund, za każdym razem, gdy rozpoczyna się przetwarzanie. Ponownie edytowałem sposób użycia budowniczego. – VladLucian