[实验任务一]:计算机组装
使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。
2.1 Builder.java package jianzaozhe; public abstract class Builder { Computer computer = new Computer(); abstract public void buildZhuJi(); abstract public void buildYinPan(); abstract public void buildCpu(); abstract public void buildNeiCun(); public Computer getComputer(){ return computer; } } 2.2 Computer.java package jianzaozhe; public class Computer { private String cpu; private String neiCun; private String yinPan; private String zhuJi; public String getZhuJi() { return zhuJi; } public void setZhuJi(String zhuJi) { this.zhuJi = zhuJi; } public String getYinPan() { return yinPan; } public void setYinPan(String yinPan) { this.yinPan = yinPan; } public String getNeiCun() { return neiCun; } public void setNeiCun(String neiCun) { this.neiCun = neiCun; } public String getCpu() { return cpu; } public void setCpu(String cpu) { this.cpu = cpu; } } 2.3 Factory.java package jianzaozhe; public class Factory { private Builder computerKind; public void setCompture(Builder kind) { this.computerKind = kind; } public Computer construct(){ computerKind.buildCpu(); computerKind.buildYinPan(); computerKind.buildZhuJi(); computerKind.buildNeiCun(); return computerKind.getComputer(); } } 2.4 LapBuilder.java package jianzaozhe; public class LapBuilder extends Builder{ @Override public void buildZhuJi() { computer.setZhuJi("LZJ"); } @Override public void buildYinPan() { computer.setYinPan("LYP"); } @Override public void buildCpu() { computer.setCpu("LC"); } @Override public void buildNeiCun() { computer.setNeiCun("LNC"); } } 2.5 Store.java package jianzaozhe; public class Store { public static void main(String[] args) { Builder lap; Factory factory=new Factory(); for (int i = 0; i < 2; i++) { if(i==1) lap = new LapBuilder(); else lap=new TaiShiBuilder(); factory.setCompture(lap); factory.construct(); System.out.println(lap.getComputer().getCpu()); System.out.println(lap.getComputer().getNeiCun()); System.out.println(lap.getComputer().getYinPan()); System.out.println(lap.getComputer().getZhuJi()); } } } 2.6 TaiShiBuilder.java package jianzaozhe; public class TaiShiBuilder extends Builder{ @Override public void buildZhuJi() { computer.setZhuJi("TZJ"); } @Override public void buildYinPan() { computer.setYinPan("TYP"); } @Override public void buildCpu() { computer.setCpu("TC"); } @Override public void buildNeiCun() { computer.setNeiCun("TNC"); } }
//c++ #include<iostream> #include<string> using namespace std; class Compture { private: string cpu; string neiCun; string yinPan; string zhuJi; public: string getZhuJi() { return zhuJi; } void setZhuJi(string z) { zhuJi = z; } string getYinPan() { return yinPan; } void setYinPan(string y) { yinPan = y; } string getNeiCun() { return neiCun; } void setNeiCun(string n) { neiCun = n; } string getCpu() { return cpu; } void setCpu(string c) { cpu = c; } }; class Builder { public: Compture* compture = new Compture(); virtual void buildZhuJi() = 0; virtual void buildYinPan() = 0; virtual void buildCpu() = 0; virtual void buildNeiCun() = 0; public: Compture* getCompture(){ return compture; } }; class Factory { private: Builder* comptureKind; public: void setCompture(Builder* kind) { comptureKind = kind; } Compture* construct(){ comptureKind->buildCpu(); comptureKind->buildYinPan(); comptureKind->buildZhuJi(); comptureKind->buildNeiCun(); return comptureKind->getCompture(); } }; class LapBuilder :public Builder{ public: void buildZhuJi() { compture->setZhuJi("LZJ"); } void buildYinPan() { compture->setYinPan("LYP"); } void buildCpu() { compture->setCpu("LC"); } void buildNeiCun() { compture->setNeiCun("LNC"); } }; class TaiShiBuilder :public Builder{ public: void buildZhuJi() { compture->setZhuJi("TZJ"); } void buildYinPan() { compture->setYinPan("TYP"); } void buildCpu() { compture->setCpu("TC"); } void buildNeiCun() { compture->setNeiCun("TNC"); } }; int main() { Builder* lap; Factory* factory = new Factory(); for (int i = 0; i < 2; i++) { if (i == 1) lap = new LapBuilder(); else lap = new TaiShiBuilder(); factory->setCompture(lap); factory->construct(); cout << lap->getCompture()->getCpu()<<endl; cout << lap->getCompture()->getNeiCun()<<endl; cout << lap->getCompture()->getYinPan()<<endl; cout << lap->getCompture()->getZhuJi() << endl; } system("pause"); return 0; }
标签:return,String,Builder,void,建造,模式,public,Tutorial,string From: https://www.cnblogs.com/manmmm/p/16798536.html