1 / 36
文档名称:

软件设计模式复习题.doc

格式:doc   大小:982KB   页数:36页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件设计模式复习题.doc

上传人:cxmckate6 2020/6/25 文件大小:982 KB

下载得到文件列表

软件设计模式复习题.doc

文档介绍

文档介绍:软件设计模式复****题熟悉每个设计模式的定义、模式UML图解、模式使用情形以及模式优缺点。设计模式的两大主题是什么?设计模式分成几大类?每大类各包含哪些模式?为什么要使用设计模式?使用设计模式有哪些好处?比较抽象工厂模式和工厂方法模式相似性和差异性。什么情况下使用抽象工厂模式?什么情形下使用工厂方法模式?简述原型模式中浅层克隆和深度克隆的区别?分别给出代码说明。模板方法和普通的实现类继承抽象类方式有何区别?是比较和分析适配器模式和桥接模式之间的共性和差异性。请用组合模式实现学校人事管理模式。综合应用装饰模式、命令模式和状态模式实现工具条命令按钮鼠标进入时高亮显示状态以及鼠标单击按钮后呈现凹陷状态,表明当前按钮为选中状态。请阐述享元模式是如何节省系统存的?试举例分析使用享元模式前后的存节约之比。使用解析器模式实现对学生成绩表的查询输入语句进行解析并执行查询,成绩表结构如下:学号专业班级课程代码课程名称课程性质任课教师成绩结合命令模式和备忘录模式实现程序的undo和redo功能。试比较和分析中介者模式和观察者模式之间的相似性和差异性?两者是否能够相互转化?模板方法和普通的抽象类继承有什么区别?使用访问者模式对12题中的学生信息进行报到。熟悉每个设计模式的定义、模式UML图解、模式使用情形以及模式优缺点。(见书)答:单件模式:单例模式:classSingleton{privatestaticSingletoninstance;privateSingleton(){}publicstaticSingletonGetInstance(){if(instance==null){instance=newSingleton();}returninstance;}客户端代码:classProgram{staticvoidMain(string[]args){Singletons1=();Singletons2=();if(s1==s2){("Objectsarethesameinstance");}();}}多线程时的单例(Lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放)classSingleton{privatestaticSingletoninstance;privatestaticreadonlyobjectsyncRoot=newobject();privateSingleton(){}publicstaticSingletonGetInstance(){lock(syncRoot){if(instance==null){instance=newSingleton();}}returninstance;}}双重锁定:不用让线程每次都加锁,而只是在实例未被创建的时候再加锁处理。同时也能保证多线程的安全性。classSingleton{privatestaticSingletoninstance;privatestaticreadonlyobjectsyncRoot=newobject();privateSingleton(){}publicstaticSingletonGetInstance(){if(instance==null){lock(syncRoot){if(instance==null){instance=newSingleton();}}}returninstance;}静态初始化:不需要开发人员显示地编写线程安全代码,即可解决多线程环境下它是不安全的问题。publicsealedclassSingleton{privatestaticreadonlySingletoninstance=newSingleton();privateSingleton(){}publicstaticSingletonGetInstance(){returninstance;}}组合模式:透明方式:在Component中声明所有用来管理子对象的方法,其中包括Add、Remonve等。ponent接口的所有子类都具备了Add和Remove。这样做的好处就是叶节点和枝节点对外界没有区别,他们具备完全一致的行为接口。安全方式:在Component接口中不去声明Add和Remove方法,那么子类的Leaf也就不要去实现它,posite声明所有用来管理子类对象的方法。由于不透明,客户端要做判断。外观模式:的Façade设计模式的两大主题是什么?答:对象组合,类继承的讨论设计模式分成几大类?每大类各包含哪些模式?答:模式大体上