您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 郑州大学设计模式小作业
一、抽象工厂模式1.1题目:计算机包含内存(RAM)、CPU等硬件设备,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现计算机设备创建过程并绘制相应的类图。1.2类图:1.3程序代码://定义接口CPUpublicinterfaceCPU{voidcreate();}//定义接口RAMpublicinterfaceRAM{voidcreate();}//定义类PcCPUpublicclassPcCPUimplementsCPU{publicvoidcreate(){System.out.println(wincpu);}}//定义类PcRAMpublicclassPcRAMimplementsRAM{publicvoidcreate(){System.out.println(winRAM);}}//定义类MacCPUpublicclassMacCPUimplementsCPU{publicvoidcreate(){System.out.println(macCPU);}}//定义类MacRAMpublicclassMacRAMimplementsRAM{publicvoidcreate(){System.out.println(macRAM);}}//定义接口ComputerFactoryinterfaceComputerFactory{CPUproduceCPU();RAMproduceRAM();}//定义类ComputerPartsClientpublicclassComputerPartsClient{publicstaticvoidmain(Stringargs[]){ComputerFactoryfactory;CPUcpu;RAMram;factory=newPcFactory();cpu=factory.produceCPU();cpu.create();ram=factory.produceRAM();ram.create();ComputerFactoryfactory1;factory1=newMacFactory();cpu=factory1.produceCPU();cpu.create();ram=factory1.produceRAM();ram.create();}}//定义类PcFactorypublicclassPcFactoryimplementsComputerFactory{publicPcCPUproduceCPU(){System.out.println(请使用PC产品族的CPU);returnnewPcCPU();}publicPcRAMproduceRAM(){System.out.println(请使用PC产品族的RAM);returnnewPcRAM();}}//定义类MacFactorypublicclassMacFactoryimplementsComputerFactory{publicMacCPUproduceCPU(){System.out.println(请使用Mac产品族的CPU);returnnewMacCPU();}publicMacRAMproduceRAM(){System.out.println(请使用Mac产品族的RAM);returnnewMacRAM();}}1.4运行结果:二、桥接模式2.1题目:如果系统中某对象有三个维度,如某日志记录器既可以支持不同的操作系统(Windows、Linux、Unix),还可以支持多种编程语言(C#、C++、Java),并且可以使用不同的输出方式(File、Console、XML)。请使用桥接模式设计该系统。2.2类图:2.3程序代码:定义类LanguagepublicabstractclassLanguage{protectedLoggerlog;publicvoidsetLogger(Loggerlog){this.log=log;}publicabstractvoidwriteLog();}定义类CpublicclassCextendsLanguage{publicvoidwriteLog(){System.out.println(用C开发该系统);this.log.outwork();}}定义类JavapublicclassJavaextendsLanguage{publicvoidwriteLog(){System.out.println(用JAVA开发该系统);this.log.outwork();}}定义类CAApublicclassCAAextendsLanguage{publicvoidwriteLog(){System.out.println(用C++开发该系统);this.log.outwork();}}定义类OperationpublicabstractclassOperation{protectedLanguagelanguage;publicvoidsetLanguage(Languagelanguage){this.language=language;}publicabstractvoidwriteLanguageVersion();}定义类WindowspublicclassWindowsextendsOperation{publicvoidwriteLanguageVersion(){System.out.println(基于Windows操作系统!);this.language.writeLog();}}定义类LinuxpublicclassLinuxextendsOperation{publicvoidwriteLanguageVersion(){System.out.println(基于Linux操作系统!);this.language.writeLog();}}定义类UnixpublicclassUnixextendsOperation{publicvoidwriteLanguageVersion(){System.out.println(基于Unix操作系统!);this.language.writeLog();}}定义接口LoggerpublicinterfaceLogger{publicvoidoutwork();}定义类ConsoleLoggerpublicclassConsoleLoggerimplementsLogger{publicvoidoutwork(){System.out.println(输出流到控制台日志完成);}}定义类FileLoggerpublicclassFileLoggerimplementsLogger{publicvoidoutwork(){System.out.println(输出流到文件日志完成);}}定义类ClientpublicclassClient{publicstaticvoidmain(String[]args){Loggerfilelog=newFileLogger();Loggerconsolelog=newConsoleLogger();Languagejava=newJava();java.setLogger(filelog);Languagecaa=newCAA();caa.setLogger(consolelog);Languagec=newC();c.setLogger(consolelog);Operationwindows=newWindows();windows.setLanguage(caa);windows.writeLanguageVersion();System.out.println(***************************);Operationlinux=newLinux();linux.setLanguage(java);linux.writeLanguageVersion();System.out.println(***************************);Operationunix=newUnix();unix.setLanguage(c);unix.writeLanguageVersion();}}2.4运行结果:
本文标题:郑州大学设计模式小作业
链接地址:https://www.777doc.com/doc-4567924 .html