- A.表示对象的部分—整体层次结构时
- B.当一个对象必须通知其它对象,而它又不能假定其它对象是谁时
- C.当创建复杂对象的算法应该独立于该对象的组成部分及其装配方式时
- D.在需要比较通用和复杂的对象指针代替简单的指针时
正确答案及解析
正确答案
A
解析
选项A代理(Proxy)模式适用于在需要比较通用和复杂的对象指针代替简单的指针的时候,常见情况有:远程代理 (Remote Proxy) 为一个对象在不同地址空间提供据不代表;虚代理 (Virtual Proxy) 根据需要创建开销很大的对象;保护代理 (Protection Proxy) 控制对原 始对象的访问,用于对象应该有不同的访问权限的时候;智能指引 (Smart Reference) 取代了简单的指针,它在访问对象时执行一些附加操作。
选项B生成器/建造者(Builder)模式将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
选项C组合(Composite)模式。将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。
选项D观察者(Observer)模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。发生改变的对象称为观察目标,被通知的对象称为观察者。一个观察目标可以对应多个观察者。
从本题图中可看出,类Leaf表示叶子节点(部分节点),类Composite表示组合节点(整体节点),它们同时继承于父类Component,同时实现了相同的操作Operation,这使得客户对单个对象(Leaf类对象)和复合对象(Composite类对象)的使用具有一致性!