一、选择题
1.组合模式描述了如何将容器对象和叶子对象进行(A)组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器对象和叶子对象 A 递归 B 重构 C 并列 D 钱德门内置 E 关联
2.组合模式包含角有(ABCD)
A 抽象构件 B 叶子构件 C 容器构件 D 客户类 E 树根构 F 枝干构件
3.以下不适合使用装饰模式的是(快递业黑名单制度A) B在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
C 需要动态地给一个对象增加功能,这些功能也可以动态地被撤销
D当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时
E 只需要对某个对象进行外观修饰而不需要修改其内在属性时
4.装饰模式的优点有哪些(ABC)
A 可以通过一种动态的方式来扩展一个对象的功能,通过配置文件可以在运行时选择不同的装饰器,从而实现不同的行为
B可以使用多个具体装饰类来装饰同一对象,得到功能更为强大的对象
mdi格式C具体构件类与具体装饰类可以独立变化,用户可以根据需要增加新的具体构件类
和具体装饰类,在使用时再对其进行组合,原有代码无须改变,符合“开闭原则”
D使用装饰模式进行系统设计时将产生很多小对象
E装饰模式比继承更加易于出错,排错也很困难,对于多次装饰的对象,调试时寻错误可能需要逐级排查,较为烦琐。
11. 对象组合的有点表述不当的是( D )
A. 容器类仅能通过被包含对象的接口来对其进行访问。
B. “黑盒”复用,封装性好,因为被包含对象的内部细节对外是不可见。
C. 通过获取指向其它的具有相同类型的对象引用,可以在运行期间动态地定义(对象的)组合。
D.造成极其严重的依赖关系。
12. 下面那个不是Decorator模式的适用性(D)。
A.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。沧州市光明小学
B.处理那些可以撤销的职责。
C.当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
D.你想在多个对象之间共享实现,但同时要求客户并不知道这一点。
13. 下面那个不是Decorator模式的效果(B)。
A.比静态继承更灵活。
B.定义了包含基本对象和组合对象的类层次结构
C.避免在层次结构高层的类有太多的特征。
D.有许多小对象。
14. 使用Decorator模式时为了保证接口的一致性,组件和装饰必须有一个公共的Component父类,为了保持Component类的简单性,需要考虑的问题有(D)。
A. Component类应集中于定义接口而不是存储数据。
B. 对数据表示的定义应延迟到子类中。
C.赋予Component太多的功能也使得,具体的子类有一些它们并不需要的功能的可能性大
大增加。
D.通常在Component类中定义父部件引用。
二、判断题
1.Composite模式的目的之一是使得用户知道并且区分他们正在使用的具体的Leaf 和Composite类。(F)
2.可以将装饰视为一个退化的、仅有一个组件的组合。然而,装饰仅给对象添加一些额外的职责――它的目的不在于对象聚集。(T)
3.就增加功能来说,Decorator模式相比生成子类更为灵活。(T)
4.就增加功能来说,Decorator模式不如Adapter模式灵活。(F)
5. 组合模式支持的可变的方面是对象的结构和组成。(T)
6.类适配器使用多重继承对一个接口与另一个接口进行匹配。(T)
三、填空题
1.门面模式是( 迪米特 )法则的典型运用.
2.Bridge模式将( 抽象部分 ) 和( 实现部分 )分离,从而可以独立地改变它们。
3.适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是( 继承 )关系,而对象适配器采用的是( 组合聚合 )关系。
4.( 装饰模式 )设计模式的意图是动态地给一个对象添加一些额外的职责。
5.对象匹配器依赖于( 对象组合 )。
6.类适配器使用( 多重继承 )对一个接口与另一个接口进行匹配。
7. ( 装饰者 )设计模式的意图是动态地给一个对象添加一些额外的职责。
8. 适配器设计模式可分为 ( 类模式(类适配器) ) 、 ( 对象模式 (对象适配器) ) 两类。
五、设计题
应力强度因子1. 为一个大公司建立一个人力资源应用程序,需要构建一个组织机构图,表示每个员工各自属于哪个部门、上级领导是谁、有哪些下属,请选择实现这个设计目标的设计模式,给出模拟的类关系图,并说明这样选择的理由。
答:
设计模式:
可采用组合模式表示“部分-纤维素乙醇整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 4分
理由:
Employee为组合中的对象声明统一的接口,实现所有类共有接口的缺省行为。声明一个接口用于访问和管理Component的子组件。 2分
Clerk和Teller在组合中表示叶节点对象,叶节点没有子节点。在组合中定义普通员工。 1
分
Supervisor定义有下属的那些员工。需要存储下级员工,在Component接口中实现与子结点有关的操作。 2分
这样设计简化了客户代码,更容易增加新的部门。 2分
图4分,要画出基类与子类之间的继承关系(1分),递归的组合关系(2分),层次结构(1分)。
2.某公司要开发一个文档编辑器,其中用户界面部分的要求如下:除了显示文档内容的窗口外,还要用滚动条让用户能看到同一页的不同部分,并且滚动条可以根据用户的需要在运行时增加或去除,请你设计一种方案,画出类关系图,并给出理由。
答:采用装饰者模式。 3分
图3分
这种模式比静态继承更加灵活,可以在不影响其他对象的情况下,在运行时增加和删除功能,如果需要增加功能,则创建一个新的子类。 4分
如果选用其他模式,也可适当给分。