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