Nadesłany przez Kamil Dworak, 05 sierpnia 2010 21:18
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.
builder_1_cs.cs:
/**************************************** * Wzorzec Projektowy Builder * * (budowniczy) * * www.algorytm.org * * Opracowal Dworak Kamil * *****************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { 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) Console.WriteLine("Monitor = " + monitor); if(procesor!=null) Console.WriteLine("Procesor = " + procesor); if(grafika!=null) Console.WriteLine("Grafika = " + grafika); if(ram!=null) Console.WriteLine("RAM = " + ram); if (hdd != null) Console.WriteLine("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 : Builder { public override void buildMonitor(){ zestawKomputerowy.setMonitor("Benq 19"); } public override void buildProcesor() { zestawKomputerowy.setProcesor("amd"); } public override void buildGrafika() { zestawKomputerowy.setGrafika("ATI"); } public override void buildRam() { zestawKomputerowy.setRam("DDR3"); } public override void buildHdd() { int t; while(true){ Console.WriteLine("Dysk do wyboru: (1) Samsung, (2) Segate, (3) Caviar"); String s = Console.ReadLine(); t =int.Parse(s); 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 : Builder { public override void buildMonitor() { zestawKomputerowy.setMonitor("LG"); } public override void buildProcesor() { zestawKomputerowy.setProcesor("INTEL"); } public override void buildGrafika() { //zestaw nie obejmuje karty graficznej } public override void buildRam() { zestawKomputerowy.setRam("DDR"); } public override 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(); } } static void Main(string[] args) { Director szef = new Director(); Builder builder = new ZestawXT001(); Builder builder2 = new ZestawABC996(); Console.WriteLine("\nZESTAW1"); szef.setBuilder(builder); szef.skladaj(); ZestawKomputerowy zestaw1 = szef.getZestaw(); szef.setBuilder(builder2); szef.skladaj(); ZestawKomputerowy zestaw2 = szef.getZestaw(); zestaw1.show(); Console.WriteLine("\n\nZESTAW2"); zestaw2.show(); String s = Console.ReadLine(); } } }