当前位置:文档之家› 设计模式笔试题

设计模式笔试题

建造者模式题目:程序设计生产电脑只需要CUP、内存和显卡,现在需要生产宏基和戴尔两个品牌的电脑。

提示:生产电脑的过程中将产品的结构和产品的零件的建造过程对客户是隐藏起来,把对建造过程进行指挥的责任和具体生产零件商的责任分割开来,达到责任划分和封装的目的。

参考解答:【个人观点】本题可使用建造者模式,参考类图如下所示:参考代码如下:/*** -----------------------------------------* @描述产品构建指导者* ----------------------------------------- */public class Director {private Builder builder;public Director(Builder builder){this.builder = builder;}public void construct(){builder.buildCPU();builder.buildMemory();builder.buildDisplayCard();}}/*** ----------------------------------------- * @描述抽象建造者* @作者 weiqj* @日期 2014-7-2* ----------------------------------------- */public interface Builder {//CUPpublic void buildCPU();//内存public void buildMemory();//显卡public void buildDisplayCard ();//最终产品public Product getFinalResult();}/*** -----------------------------------------* @描述抽象产品* @作者 weiqj* @日期 2014-7-2* -----------------------------------------*/public abstract class Product {protected List<String> parts = new ArrayList<String>();//添加部件public void add(String part){parts.add(part);}//显示产品信息public void show(){System.out.print("产品部件信息:");for(String part : parts){System.out.print(part + "\t");}}}/*** -----------------------------------------* @描述宏基笔记本建造者* @作者 weiqj* @日期 2014-7-2* -----------------------------------------*/public class AcerBuilder implements Builder {private Product product = new Acer();@Overridepublic void buildCPU() {product.add("CUP: Intel 酷睿i3 2350M"); }@Overridepublic void buildMemory() {product.add("内存: 4GB DDR3 1333MHz");}@Overridepublic void buildDisplayCard() {product.add("显卡: NVIDIA GeForce GT 520M"); }@Overridepublic Product getFinalResult() {return product;}}/*** -----------------------------------------* @描述戴尔笔记本建造者* -----------------------------------------*/public class DellBuilder implements Builder { private Product product = new Dell();@Overridepublic void buildCPU() {product.add("CUP: Intel 酷睿i7 3612QM");}@Overridepublic void buildMemory() {product.add("内存: 8GB DDR3 1600MHz");}@Overridepublic void buildDisplayCard() {product.add("显卡: NVIDIA GeForce GT 640M+Intel GMA HD 4000"); }@Overridepublic Product getFinalResult() {return product;}}/*** -----------------------------------------* @描述宏基笔记本* @作者 weiqj* @日期 2014-7-2* -----------------------------------------*/public class Acer extends Product{}/*** -----------------------------------------* @描述戴尔笔记本* @作者 weiqj* @日期 2014-7-2public class Client {private static Builder acerBuilder = new AcerBuilder();private static Builder dellBuilder = new DellBuilder();public static void main(String[] args){System.out.print("宏基");Director director = new Director(acerBuilder);director.construct();Product product = acerBuilder.getFinalResult();product.show();/***************************************/System.out.println();/***************************************/System.out.print("戴尔");director = new Director(dellBuilder);director.construct();product = dellBuilder.getFinalResult();product.show();}}适配器设计模式题目:程序设计家里有个两相插座,新买来的洗衣机和电视机都是三相插头,没办法用,所以想要制作一个三相转两相的插座适配器,请设计程序代码参考解答:【个人观点】本题可使用适配器模式,代码如下/*** 目标* @author weiqinjian**/public interface ThreeElectricOutlet {//用来刻画三相插座public abstract void connectElectricCurrent();}/*** 适配器* @author weiqingjian**/public class TreeElecricAdapter implements ThreeElectricOutlet {TwoElectricOutlet outlet;public TreeElecricAdapter(TwoElectricOutlet teo) {this.outlet=teo;}@Overridepublic void connectElectricCurrent() {outlet.connectElectricCurrent();}}/*** 电视* @author weiqingjian**/public class Tv implements TwoElectricOutlet {private String name;public Tv() {name="长江电视机";}public Tv(String s){=s;}@Overridepublic void connectElectricCurrent() {turnOn();}private void turnOn(){System.out.println(name+"开始播放节目");}}*** 洗衣机* @author weiqingjian**/public class Wash implements ThreeElectricOutlet {private String name;public Wash() {name="洗衣机";}public Wash(String name){=name;}@Overridepublic void connectElectricCurrent() {turnOn();}private void turnOn(){/*** 被适配者* @author weiqingjian**/public interface TwoElectricOutlet {//刻画两相插座public abstract void connectElectricCurrent();}public class Application {public static void main(String[] args) {ThreeElectricOutlet outlet; //目标接口三相插座Wash wash=new Wash();outlet=wash;System.out.println("使用三相插座接通电流");outlet.connectElectricCurrent();Tv tv=new Tv();TreeElecricAdapter adapter=new TreeElecricAdapter(tv); outlet= adapter;System.out.println("使用三相插座接通电流");outlet.connectElectricCurrent();}}。

相关主题