软件设计模式复习题
软件设计模式复习题
1、 熟悉每个设计模式的定义、模式UML图解、模式使用情形以及模式优缺点。 2、 设计模式的两大主题是什么?
3、 设计模式分成几大类?每大类各包含哪些模式? 4、 为什么要使用设计模式?使用设计模式有哪些好处?
5、 比较抽象工厂模式和工厂方法模式相似性和差异性。什么情况下使用抽象工厂模式?什
么情形下使用工厂方法模式?
6、 简述原型模式中浅层克隆和深度克隆的区别?分别给出代码说明。 7、 模板方法和普通的实现类继承抽象类方式有何区别?
8、 是比较和分析适配器模式和桥接模式之间的共性和差异性。 9、 请用组合模式实现学校人事管理模式。 10、 综合应用装饰模式、命令模式和状态模式实现工具条命令按钮鼠标进入时高亮显示
状态以及鼠标单击按钮后呈现凹陷状态,表明当前按钮为选中状态。 11、 请阐述享元模式是如何节省系统内存的?试举例分析使用享元模式前后的内存节
约之比。 12、 使用解析器模式实现对学生成绩表的查询输入语句进行解析并执行查询,成绩表结
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.GetInstance(); Singleton s2 = Singleton.GetInstance();
if (s1 = = s2) {Console.WriteLine("Objects are the same instance");} Console.Read();}}
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; }} 组合模式:
透明方式:在Component中声明所有用来管理子对象的方法,其中包括Add、Remonve
等。这样实现Component接口的所有子类都具备了Add和Remove。这样做的好处就是叶节点和枝节点对外界没有区别,他们具备完全一致的行为接口。 安全方式:在Component接口中不去声明Add和Remove方法,那么子类的Leaf也就不
要去实现它,而是在Composite声明所有用来管理子类对象的方法。由于不透明,客户端要做判断。 外观模式:
创建的Façade
2、 设计模式的两大主题是什么? 答:对象组合,类继承的讨论
3、 设计模式分成几大类?每大类各包含哪些模式?
答:
模式大体上分为3类,分别从对象
的创建、对象的结构和对象的行为这3个方面来总结软件开发人员在设计方面的经验。
(1)创建型模式
单件模式(Singleton):单例模式确保某一个类有且仅有一个实例,并且提供了一个全局的访问点,切自行实例化并向整个系统提供这个实例。
抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。(抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。)
建造者模式(Builder):将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立地变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。
工厂方法模式(Factory Method):抽象工厂类负责定义创建对象的接口,具体对象的创建工作由实现抽象工厂的具体工厂类来完成。工厂类不再负责所有产品的创建,而是将具体的创建工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
原型模式(Prototype):通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的方法创建出更多同类型的对象。
(没有的)简单工厂模式(Simple Factory):定义一个具体的工厂类来负责创建一些类的实例,而这些被创建的类都应该有一个共同的父类,这样就可以实现面向抽象而不是面向具体编程。客户类和工厂类分开,客户类任何时候需要某种产品,只需向工厂请求即可,客户类无需修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。 (2)结构型模式
适配器模式(Adapter):把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。(将类自己的接口包裹在一个已存在的类中。)
桥接模式(Bridge):将抽象化与实现化脱耦,使得两者可以独立地变化,也就是指在一个软件系统的抽象化和实现化之间使用组合关系而不是继承关系,从而使两者可以独立地变化。
装饰模式(Decorator):装饰模式以对客户端透明的方式扩展对象的功能,是继承关
系的一个替代方案,提供比继承更多的灵活性。(装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。)
组合模式(Composite):用来描述整体与部 …… 此处隐藏:2993字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学




