Witajcie!
Mam za zadanie zamodelować kawiarkę używając wzorca Builder.
Dokładna treść zadania: https://prnt.sc/vfoer9 -
Nie wiem czy może powinienem skopiować tutaj całą treść ale wydaje mi się, że na obrazie łatwiej będzie to "zrozumieć", bo są kolorki użyte.
Zadanie jest pracą domową na studiach, wiem że nie każdy lubi pomagać jeśli o nie chodzi ale liczę na jakikolwiek odzew - poradę / krytykę.
Jest to moje pierwsze doświadczenie z jakimkolwiek wzorcem projektowym, getterami i setterami i typem enum (znam enum w języku C).
Nie wiem czy to co robię jest jakkolwiek poprawne, a nawet jeśli tak to nie wiem jak dalej ugryźć to zadanie.
Proszę przejrzycie kod poniżej i dajcie wskazówki. Czas mam do wtorku więc już z desperacji musiałem kogoś poprosić o pomoc, bo nie poradziłem sobie z nim sam. (Zadane zostało w piątek).
//Plik 1 - MokaPot.java - metody (settery / gettery) do tworzenia kawiarki
//Plik 2 - Main.java - tworzenie kawiarki za pomocą łańcuchowego wywołania metod
public class MokaPot {
public enum SupportedCookers {
Electric, Stove, Induction;
}
private Integer setNoCups ;
private String setMaterial;
private String setMaker;
private Double setPrice;
private boolean setReducer;
private boolean setMilkFrother;
private SupportedCookers setCookerType;
public static Builder builder() {
return new Builder();
}
private MokaPot() {}
public void setCookerType(SupportedCookers setCookerType) {
this.setCookerType = setCookerType;
}
public SupportedCookers getSupportedCookers() {
return this.setCookerType;
}
public static final class Builder {
private Integer setNoCups=1;
private String setMaterial;
private String setMaker = "MokaPot";
private Double setPrice;
private boolean setReducer = false;
private boolean setMilkFrother=false;
public Builder setNoCups (Integer setNoCups ) {
this.setNoCups = setNoCups;
return this;
}
public Builder setMaterial (String setMaterial) {
this.setMaterial = setMaterial;
return this;
}
public Builder setMaker (String setMaker ) {
this.setMaker = setMaker ;
return this;
}
public Builder setPrice (Double setPrice) {
this.setPrice = setPrice;
return this;
}
public Builder setReducer (boolean setReducer) {
this.setReducer = setReducer;
return this;
}
public Builder setMilkFrother (Boolean setMilkFrother ) {
this.setMilkFrother = setMilkFrother;
return this;
}
public MokaPot build() {
if(setNoCups == null){
throw new IllegalStateException("Cups count can't be empty");
}
//ten kod był w przykladzie uzycia wzorca builder na stronie:
//https://devcave.pl/effective-java/wzorzec-projektowy-builder
MokaPot mokaPot = new MokaPot();
mokaPot.setNoCups = this.setNoCups;
mokaPot.setMaterial = this.setMaterial;
mokaPot.setMaker = this.setMaker;
mokaPot.setPrice = this.setPrice;
mokaPot.setReducer = this.setReducer;
mokaPot.setMilkFrother = this.setMilkFrother;
//tu sprawdzalem sobie czy to jakkolwiek działa
System.out.println(mokaPot.setNoCups);
System.out.println(mokaPot.setMaterial);
System.out.println(mokaPot.setMaker);
System.out.println(mokaPot.setPrice);
System.out.println(mokaPot.setReducer);
System.out.println(mokaPot.setMilkFrother);
return mokaPot;
}
}
}
public class Main {
public static void main(String[] args) {
MokaPot mokaPot1 = MokaPot.builder()
.setMilkFrother(true)
.setReducer(false)
.setMaker("Bialetti")
.build();
System.out.println("-------------------");
MokaPot mokaPot2 = MokaPot.builder()
.setMilkFrother(true)
.setReducer(false)
.setMaker("Bialetti")
.build();
System.out.println("-------------------");
//sprawdzam czy kawiarki sa takie same
System.out.println(mokaPot1.equals(mokaPot2));
//z jakiegos powodu pokazuje "false" ## :( ##
}
}
Jak widać zrobiłem "coś" lecz w tym wszystkim się nie mogę odnaleźć.
Może na koniec powinienem zadać jakieś pytanie żebyście wiedzieli jakiej pomocy bym chciał lecz na wstępie chyba po prostu potrzebuję żeby ktoś z doświadczeniem spojrzał na to cudo.
- screenshot-20201108195050.png (151 KB) - ściągnięć: 8