1 / 26
文档名称:

软件设计模式复习题.doc

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

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

分享

预览

软件设计模式复习题.doc

上传人:63229029 2017/6/4 文件大小:406 KB

下载得到文件列表

软件设计模式复习题.doc

文档介绍

文档介绍:软件设计模式复****题 1、熟悉每个设计模式的定义、模式 UML 图解、模式使用情形以及模式优缺点。 2、设计模式的两大主题是什么? 3、设计模式分成几大类?每大类各包含哪些模式? 4、为什么要使用设计模式?使用设计模式有哪些好处? 5、比较抽象工厂模式和工厂方法模式相似性和差异性。什么情况下使用抽象工厂模式?什么情形下使用工厂方法模式? 6、简述原型模式中浅层克隆和深度克隆的区别?分别给出代码说明。 7、模板方法和普通的实现类继承抽象类方式有何区别? 8、是比较和分析适配器模式和桥接模式之间的共性和差异性。 9、请用组合模式实现学校人事管理模式。 10、综合应用装饰模式、命令模式和状态模式实现工具条命令按钮鼠标进入时高亮显示状态以及鼠标单击按钮后呈现凹陷状态,表明当前按钮为选中状态。 11、请阐述享元模式是如何节省系统内存的?试举例分析使用享元模式前后的内存节约之比。 12、使用解析器模式实现对学生成绩表的查询输入语句进行解析并执行查询, 成绩表结构如下: 学号姓名专业班级课程代码课程名称课程性质任课教师成绩 13、结合命令模式和备忘录模式实现程序的 undo 和 redo 功能。 14、试比较和分析中介者模式和观察者模式之间的相似性和差异性?两者是否能够相互转化? 15、模板方法和普通的抽象类继承有什么区别? 16、使用访问者模式对 12 题中的学生信息进行报到。 1、熟悉每个设计模式的定义、模式 UML 图解、模式使用情形以及模式优缺点。( 见书) 答: 单件模式: ○ 1 单例模式: class Singleton{private static Singleton instance; private Singleton(){} public static Singleton GetInstance(){if (instance == null) { instance = new Singleton();} return instance; } 客户端代码: class Program{static void Main(string[] args) { Singleton s1= (); Singleton s2= (); if (s1 == s2) {("Objects are the same instance");} ();}} ○ 2 多线程时的单例( Lock 是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码, 则它将一直等待( 即被阻止), 直到该对象被释放) class Singleton{private static Singleton instance; private static readonly object syncRoot = new object(); private Singleton(){} public static Singleton GetInstance(){lock (syncRoot) { if (instance == null) { instance = new Singleton(); }} return instance ;}} 双重锁定: 不用让线程每次都加锁, 而只是在实例未被创建的时候再加锁处理。同时也能保证多线程的安全性。 class Singleton{private static Singleton instance; private static readonly object syncRoot = new object(); private Singleton(){ } public static Singleton GetInstance(){if (instance == null) { lock (syncRoot) { if (instance == null) { instance = new Singleton();}}} return instance;} 静态初始化: 不需要开发人员显示地编写线程安全代码, 即可解决多线程环境下它是不安全的问题。 public sealed class Singleton{ private static readonly Singleton instance=new Singleton(); private Singleton(){} public static Singleton GetInstance(){return instance; }} 组合模式: ?透明方式:ponent 中声明所有用来管理子对象的方法,其中包括