Builder Pattern

Status
Nicht offen für weitere Antworten.
L

lowcast

Gast
Hi,

ich habe eine Klasse, deren Konstruktor viele Parameter hat. Aus diesem Grund habe ich mich für den Builder Pattern entschieden. Jedoch soll die Klasse veränderbar sein, d.h. es soll eine Möglichkeit geben einige Werte dieser Klasse zu verändern. Ist es richtig, wenn man wie folgt vorgeht mit dem setter in Klasse Raum.


Java:
public class Raum{

private int groesse;//Pflicht
private int volumen;//Pflicht
private String name;//Pflicht
//optionale
private int x=1;
private int y=1;
private int z=1;
...

public static class Builder{
private int groesse;//Pflicht
private int volumen;//Pflicht
private String name;//Pflicht
//optionale
private int x=1;
private int y=1;
private int z=1;
...

public Builder(int groesse, int volumen, Stirng name){
this....
}

public Builder xGroesse(int x){
x=x;
return this;}
.....
}

public Raum build(){
return new Raum(this);
}

}

private Raum(...){

}

public void setX(int x){
if(x==null) throw new UnitializedException();
x=x;
}
...
}
 

javimka

Top Contributor
Vom Prinzip her schon, nur sollte dein setX so aussehen:
Java:
public void setX(int x) {
   this.x = x;
}
Die if-Abfrage x==null macht keinen Sinn, weil x niemals null sein kann. null ist nicht gleich 0 (als Zahl).
Und mit x=x speicherst du das x auch sich selbst ab, statt auf das x aus der Klasse, deswegen this.x = x;
 

Wildcard

Top Contributor
Ich finde es bei Buildern schöner wenn alle setter statt void sich selbst zurückliefern. Das ermöglicht schöne chains wie das:
Java:
Builder.myDefault().size(100,100).color(Color.WHITE).name("foobar").create();
 
L

lowcast

Gast
Hi,

ich habe hier zwei Klassen Vater und Sohn, wobei Vater abstrakt ist.
Dieser Code ist unschön, wenn man ein Sohn Objekt erzeugt muss man in dem Beispiel zuerst das Alter initialisieren und anschließend den Namen.

Java:
Vater vVater = new Sohn.SohnBuilder().alter(12).name("Heiko").build();

Gibt es vielleicht für dieses Beispiel eine bessere Möglichkeit? Es sollte natürlich berücksichtigt werden, dass Vater mehrere Parameter hat, andernfalls wäre ein BuilderPattern nicht notwendig.

Java:
public abstract class Vater {

	private String mName;

	public abstract static class BuilderVater {
		protected String mName;

		public BuilderVater name(String aName) {
			mName = aName;
			return this;
		}

		public abstract Vater build();
	}

	protected Vater(BuilderVater aBuilder) {
		mName = aBuilder.mName;
	}
}


public class Sohn extends Vater {

	private int mAlter;

	public static class SohnBuilder extends BuilderVater {
		private int mAlter;

		public SohnBuilder alter(int aAlter) {
			mAlter = aAlter;
			return this;
		}

		public Vater build() {
			return new Sohn(this);
		}

	}

	protected Sohn(SohnBuilder aBuilder) {
		super(aBuilder);
		mAlter = aBuilder.mAlter;
	}

}
 
B

bygones

Gast
Sohn ist eine Unterklasse von Vater ??

builder hin oder her - diese Verbindung find ich mehr als fragwuerdig...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
slawaweis Factory-Builder Pattern? Softwareentwicklung 6
byte Erzeuger Muster (Builder) Softwareentwicklung 2
B Haskell pattern matching in if else Anweisung umschreiben Softwareentwicklung 3
E Frage zu Dekorator-Pattern Softwareentwicklung 2
M Visito/Besucher Design-Pattern/Strukturmuster Softwareentwicklung 4
H2SO3- design pattern: code in model classes Softwareentwicklung 5
G Design Pattern gesucht! Softwareentwicklung 4
D Design Pattern Softwareentwicklung 6
B konfigurierbare Objekte - Singelton und Factory Pattern Softwareentwicklung 3
C Flyweight-Pattern verhält sich unerwartet Softwareentwicklung 5
S Design Pattern für zwei abhängige Klassen Softwareentwicklung 8
U Decorator Pattern in der Java API Softwareentwicklung 6
M Proxy Pattern - Verständnisfrage Softwareentwicklung 2
0 Unklarheiten beim State Pattern Softwareentwicklung 2
N Composite pattern Softwareentwicklung 2
N Pattern Softwareentwicklung 2
1 Factory-Pattern: Bitte um Tipps zur Anwendung Softwareentwicklung 3
L Pattern Softwareentwicklung 3
J DAO Pattern bei komplexen Datenbankzugriffen Softwareentwicklung 2
M IllegalStateException - Problem mit GUI und Observer pattern Softwareentwicklung 4
G Pattern für Datenbank Anwendung Softwareentwicklung 22
A Iterato-Pattern und Innere Klassen Softwareentwicklung 9
F Unterschied Command und Strategy pattern Softwareentwicklung 4
F Wann Observer Pattern nehmen und Vorteile davon? Softwareentwicklung 5
H Frage ueber Prototype Pattern? Softwareentwicklung 2
K Design Pattern für einen simple Rechenmaschine Softwareentwicklung 18
G Warum/Wann mehrere Modells beim MVC-Pattern verwenden ? Softwareentwicklung 7
timomeinen DAO Pattern - Relationen mit DTO abbilden Softwareentwicklung 9
D Singleton pattern Softwareentwicklung 19
M decoration pattern Softwareentwicklung 2

Ähnliche Java Themen

Neue Themen


Oben