Kürzlich stieß ich auf ein Builder-Muster, das mich faszinierte.Logik in BuilderPattern
Also habe ich eine EntityBuilder
, die eine Entity
erstellt, aber es gibt die Entität nicht zurück. Hier ist die Methodensignatur:
public void build();
stattdessen innerhalb der build()
Methode liefert es das neue Objekt erstellt, das Entity
, zu einer CacheImplementation
Instanz zu speichern. Hinweis: CacheImpl
wird in den Builder-Konstruktor eingefügt.
public void build(){
//create new entity
cacheImplementation.add(entity);
}
Hört sich das nach Best Practice an?
Später bearbeiten 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);
}
}
Der Builder in der folgenden Art und Weise verwendet wird:
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();
}
}
Hinweis: Die CacheImpl Instanz speichert nur die Einheiten in einem List<>
, die alle N Sekunden zugreift.
Variationen der traditionellen Designmuster klingt nett. Ich habe ein kleines Code-Snippet hinzugefügt, um zu sehen, was ich gemeint habe. Ist das genug zu urteilen? – VladLucian
Nein, nicht genug. Der interessantere Teil wird die Verwendung des Builders und des Caches sein. Übrigens hört sich eine Liste als Cache seltsam an. Ich habe eine Karte erwartet. – janos
Es ist keine Liste, es ist ein Satz, der um N Sekunden zurückgesetzt wird, jedes Mal wenn die Verarbeitung beginnt. Ich habe erneut bearbeitet, wie der Builder verwendet wird. – VladLucian