Nadesłany przez Kamil Dworak, 04 sierpnia 2010 13:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Main.java:
/****************************************
* Wzorzec Projektowy Builder *
* (budowniczy) *
* www.algorytm.org *
* Opracowal Dworak Kamil *
*****************************************/
import java.util.*;
/* produkt koncowy */
class ZestawKomputerowy {
private String monitor;
private String procesor;
private String grafika;
private String ram;
private String hdd;
public void setMonitor(String monitor){
this.monitor = monitor ;
}
public void setProcesor(String procesor){
this.procesor = procesor;
}
public void setGrafika(String grafika){
this.grafika = grafika;
}
public void setRam(String ram){
this.ram = ram;
}
public void setHdd(String hdd){
this.hdd = hdd;
}
public void show(){
if(monitor!=null) System.out.println("Monitor = " + monitor);
if(procesor!=null) System.out.println("Procesor = " + procesor);
if(grafika!=null) System.out.println("Grafika = " + grafika);
if(ram!=null) System.out.println("RAM = " + ram);
if(hdd!=null) System.out.println("HDD = " + hdd);
}
}
/* nasz glowny interface */
abstract class Builder {
protected ZestawKomputerowy zestawKomputerowy;
public void newZestaw(){
zestawKomputerowy = new ZestawKomputerowy();
}
public ZestawKomputerowy getZestaw(){
return zestawKomputerowy;
}
public abstract void buildMonitor();
public abstract void buildProcesor();
public abstract void buildGrafika();
public abstract void buildRam();
public abstract void buildHdd();
}
class ZestawXT001 extends Builder {
public void buildMonitor(){
zestawKomputerowy.setMonitor("Benq 19");
}
public void buildProcesor(){
zestawKomputerowy.setProcesor("amd");
}
public void buildGrafika(){
zestawKomputerowy.setGrafika("ATI");
}
public void buildRam(){
zestawKomputerowy.setRam("DDR3");
}
public void buildHdd(){
Scanner in = new Scanner(System.in);
int t;
while(true){
System.out.println("Dysk do wyboru: (1) Samsung, (2) Segate, (3) Caviar");
t = in.nextInt();
if(t>0 && t<4) break;
}
String wynik="";
if(t==1) wynik = "Samsung";
else if(t==2) wynik = "Segate";
else if(t==3) wynik = "Caviar";
zestawKomputerowy.setHdd(wynik);
}
}
class ZestawABC996 extends Builder {
public void buildMonitor(){
zestawKomputerowy.setMonitor("LG");
}
public void buildProcesor(){
zestawKomputerowy.setProcesor("INTEL");
}
public void buildGrafika(){
//zestaw nie obejmuje karty graficznej
}
public void buildRam(){
zestawKomputerowy.setRam("DDR");
}
public void buildHdd(){
zestawKomputerowy.setHdd("Samsung");
}
}
/* keirownik */
class Director {
private Builder builder;
public void setBuilder(Builder builder){
this.builder = builder;
}
public ZestawKomputerowy getZestaw(){
return builder.getZestaw();
}
public void skladaj(){
builder.newZestaw();
builder.buildMonitor();
builder.buildProcesor();
builder.buildHdd();
builder.buildRam();
builder.buildGrafika();
}
}
public class Main {
public static void main(String[]args){
Director szef = new Director();
Builder builder = new ZestawXT001();
Builder builder2 = new ZestawABC996();
System.out.println("\nZESTAW1");
szef.setBuilder(builder);
szef.skladaj();
ZestawKomputerowy zestaw1 = szef.getZestaw();
szef.setBuilder(builder2);
szef.skladaj();
ZestawKomputerowy zestaw2 = szef.getZestaw();
zestaw1.show();
System.out.println("\n\nZESTAW2");
zestaw2.show();
}
}


chociaż nie wydaje się za bardzo projektowe