设计模式考点( 三 )


适用性
1、一个应用程序使用了大量的对象 。
2、完全由于使用大量的对象 , 造成很大的存储开销 。
3、对象的大多数状态都可变为外部状态 。
4、如果删除对象的外部状态 , 那么可以用相对较少的共享对象取代很多组对象 。
代理模式(Proxy)
**意图:**为其他对象提供一种代理以控制对这个对象的访问 。
题目选项描述
1、将一个对象加以包装以控制对这个对象的访问
2、在需要比较通用和复杂的对象指针代替简单的指针时
3、为其他对象提供一种代理以控制对这个对象的访问
适用性
Proxy模式适用于在需要比较通用和复杂的对象指针代替简单的指针的时候,常见情况有:
1、远程代理( Proxy)为一个对象在不同地址空间提供局部代表 。
2、虚代理( Proxy)根据需要创建开销很大的对象 。
3、保护代理( Proxy)控制对原始对象的访问 , 用于对象应该有不同的访问权限的时候 。
4、智能引用(Smart )取代了简单的指针 , 它在访问对象时执行一些附加操作 。典型用途包括:对指向实际对象的引用计数 , 这样当该对象没有引用时 , 可以被自动释放;当第一次引用一个持久对象时 , 将它装入内存;在访问一个实际对象前 , 检查是否已经锁定了它 , 以确保其他对象不能改变它 。
行为型设计模式 责任链模式(Chain of )
**意图:**使多个对象都有机会处理请求 , 从而避免请求的发送者和接收者之间的耦合关系 。将这些对象连成一条链 , 并沿着这条链传递该请求 , 直到有一个对象处理它为止 。
题目选项描述
1、有多个对象可以处理一个请求 , 在运行时刻自动确定由哪个对象处理
2、一个客户需要使用一组相关对象
3、想在不明确指定接收者的情况下向多个对象中的一个提交一个请求
适用性
1、有多个的对象可以处理一个请求 , 哪个对象处理该请求运行时刻自动确定 。
2、想在不明确指定接收者的情况下向多个对象中的一个提交一个请求 。
3、可处理一个请求的对象集合应被动态指定 。
命令模式()
**意图:**将一个请求封装为一个对象 , 从而使得可以用不同的请求对客户进行参数化;对请求排队或记录请求日志 , 以及支持可撤销的操作 。
题目选项描述
1、抽象出执行的动作以参数化某对象
2、将请求封装为对象从而可以使用不同的请求对客户进行参数化
3、在不同的时刻指定、排列和执行请求
适用性
1、抽象出待执行的动作以参数化某对象( 。模式是过程语言中的回调(机制的一个面向对象的替代品 。
2、在不同的时刻指定、排列和执行请求一个对象可以有一个与初始请求无关的生存期 。如果一个请求的接收者可用一种与地址空间无关的方式表达 , 那么就可以将负责该请求的命令对象传递给另一个不同的进程并在那儿实现该请求 。
3、支持取消操作的操作可在实施操作前将状态存储起来 , 在取消探作时这个状态用来消除该操作的影响 。接口必须添加一个操作 , 该操作取消上一次 调用的效果 。执行的命令被存储在一个历史列表中 。可通过向后和向前遍历这一列表并分别调用和来实现重数不限的“取消和“重做” 。
4、支持修改日志这样当系统崩溃时 , 这些修改可以被重做一遍 。在接口中添加装载操作和存储操作 , 可以用来保持变动的一个一致的修改日志 。从崩溃中恢复的过程包括从磁盘中重新读入记录下来的命令并用操作重新执行它们 。