algorytm.org

Implementacja w Java



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Budowniczy (builder) - Implementacja w Java
Ocena użytkownikóww: *****  / 19
SłabyŚwietny
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();
    }
}
Komentarze
photo
+1 # Ki$zka 2018-11-20 15:18
całkiem sprytne
chociaż nie wydaje się za bardzo projektowe
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz