8-1-设计模式-工厂模式
- 格式:pdf
- 大小:731.62 KB
- 文档页数:21


《设计模式》刘伟 实验参考答案
实验 1
1.在某图形库 API 中提供了多种矢量图模板,用户可以基于这些矢量图创建不同的显示图形,图形库设计人员设计的初始类图如下所示:
在该图形库中,每个图形类(如 Circle、Triangle 等)的 init()方法用于初始化所创建的图形, setColor()方法用于给图形设置边框颜色,fill()方法用于给图形设置填充颜色,setSize() 方法用于设置图形的大小,display()方法用于显示图形。
客户类(Client)在使用该图形库时发现存在如下问题:
① 由于在创建窗口时每次只需要使用图形库中的一种图形,因此在更换图形时需要修改客户类源代码;
② 在图形库中增加并使用新的图形时需要修改客户类源代码;
③ 客户类在每次使用图形对象之前需要先创建图形对象,有些图形的创建过程较为复杂,导致客户类代码冗长且难以维护。
现需要根据面向对象设计原则对该系统进行重构,要求如下:
① 隔离图形的创建和使用,将图形的创建过程封装在专门的类中,客户类在使用图形时无须直接创建图形对象,甚至不需要关心具体图形类类名;
② 客户类能够方便地更换图形或使用新增图形,无须针对具体图形类编程,符合开闭原则。
绘制重构之后的类图并说明在重构过程中所运用的面向对象设计原则。
参考答案: Circle
+
+
+
+
+ init () setColor
() fill setSize
() display ()
void
void
void
void
void Triangle
+
+
+
+
+ init () setColor
() fill setSize
() display ()
void
void
void
void
void Rectangle
+
+
+
+
+ init () setColor
() fill setSize
1.什么是设计模式?设计模式的目标是什么?
答:
设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。
2.设计模式具有哪三大特点?
答:
(1) 在特定的场景下有可重用性,对相同类型不同问题的环境,其解决方案都有效。
(2) 可传授性,即问题出现的机会很多,解决问题的方案相同,人们相对可以接受。
(3) 有表示模式的名称。
3.GOF 设计模式常用的有几种?GOF 设计模式按照模式的目的可
分为哪三类?
答: 行为型,结构型,创建型
4.画出抽象工厂方法类图(这类题自己看书去。)
5.针对接口编程,不针对实现编程的意义。
答: 主题与观察者都是用接口:观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点。
6.面向对象(OO)的原则有:
答:
1. 封装变化
2. 多用组合,少用继承
3. 针对接口编程,不针对实现编程
4. 为交互对象之间的松耦合设计而努力
5. 对扩展开放,对修改关闭
6. 依赖抽象,不要依赖具体类
7. 只和朋友交谈
8. 别找我,我会找你
9. 类应该只有一个改变的理由 7. 耦合分为几种?
(1) 内容耦合 (2) 公共耦合 (3) 外部耦合 (4) 控制耦合
(5) 标记耦合 (6) 数据耦合 (7) 非直接耦合
8.GOF模式分为几种,每种包含哪些模式?
答:分为3种。
创建型设计模式:简单工厂模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式;
结构型设计模式:适配器模式,桥接模式,组合模式,装饰模式,外观模式,轻量级模式,代理模式;
行为性设计模式:责任链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略者模式,模板方法模式,访问者模式。
1.不要和陌生人说话” 是(D)原则的通俗表述
目录
1.C语言设计模式(开篇) ......................................................................................... 2
2.C语言和设计模式(继承、封装、多态) ............................................................. 3
2.1继承性 .............................................................................................................. 3
2.2封装性 .............................................................................................................. 4
2.3多态 .................................................................................................................. 4
3.单件模式 .................................................................................................................... 4
4.工厂模式 .................................................................................................................... 5
5.抽象工厂模式 ............................................................................................................ 6
23种设计模式考题
设计模式是软件开发中常用的解决问题的方法论,它们提供了一套经过验证的解决方案,可以帮助开发者更好地组织和设计代码。下面是23种常见的设计模式的考题及其回答:
1. 单例模式:
问,请解释什么是单例模式,并说明它的优缺点。
答,单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。其优点是可以节省系统资源,提高性能;缺点是可能引入全局状态,使代码难以调试和测试。
2. 工厂模式:
问,请解释什么是工厂模式,并列举其主要类型。
答,工厂模式是一种创建型设计模式,它将对象的创建过程封装在一个工厂类中。主要类型包括简单工厂模式、工厂方法模式和抽象工厂模式。
3. 抽象工厂模式:
问,请解释什么是抽象工厂模式,并说明它与工厂方法模式的区别。
答,抽象工厂模式是一种创建型设计模式,它提供一个接口,用于创建一系列相关或依赖对象的家族。与工厂方法模式不同的是,抽象工厂模式强调创建一系列相关对象,而不是一个对象。
4. 建造者模式:
问,请解释什么是建造者模式,并说明它的优势。
答,建造者模式是一种创建型设计模式,它将一个复杂对象的构建过程分解为多个简单的步骤,并通过一个指导者类来控制构建过程。其优势是可以灵活地构建不同的产品,同时隐藏了产品的内部结构。
5. 原型模式:
问,请解释什么是原型模式,并说明它的适用场景。
答,原型模式是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化类。适用场景包括需要创建大量相似对象、对象的创建过程复杂或耗时等情况。
6. 适配器模式:
问,请解释什么是适配器模式,并说明它的作用。
答,适配器模式是一种结构型设计模式,它将一个类的接口转换成客户端所期望的另一个接口。它的作用是使原本不兼容的接口能够协同工作。