设计模式应用举例(2)

来源:互联网 发布:淘宝搜索热词排名 编辑:程序博客网 时间:2024/06/09 20:23

三、关系模式


A.  父类与子类关系


1)策略模式(strategy

强调重载一组同性质、行为细节相差大的接口,使这些接口可替换

例如,压力测试工具,测试玩家登陆登出、测试玩家不同场景间切换、测试玩家场景内移动等各种想要测试的行为、过程,运用策略模式,可插拔不同的测试内容,方便扩展编写自定义测试内容


2)模版方法模式(template method

强调重载一组同性质、行为细节相仿的接口,可复用接口、默认实现等

例如,角色背包、宠物背包、角色仓库



B. 类之间的关系


1)观察者模式(observer

也就是发布订阅模式,被观察者发生变化,通知所有观察者

例如,网络消息分发器、事件触发分发器等等


2)迭代子模式(iterator

按序访问某聚集中的对象

例如,STL容器迭代器;自己写迭代器的地方还真不多哈!基本上是用现在库提供的。若有需要自己用到设计该模式的例子请留言!


3)责任链模式(chain of responsibility

将处理句柄做成链表形式,依次调用!

完全无法理解为什么有这种设计模式!需要吗?需要吗?需要吗?若有需要自己用到设计该模式的例子请留言!


4)命令模式(command

隐藏命令细节,请求命令和执行命令解藕

例如,作弊命令系统

例如,播放一组动作系列,如玩家施法过程,用该模式可以很好的解藕各种子动作间的关系



C. 类的状态


1)备忘录模式(memento

即备份-还原模式

例如,编辑器中的 ctrl+z

例如,数据库的滚回操作

相对而言,自己是没用过该模式


2)状态模式(state

根据不同的状态,当状态改变时,同时改变其行为

例如,session状态的维护



D. 通过中间类


1)访问者模式(visitor

通过对被访问者的引用,实现新的操作逻辑

例如,想提炼、扩展某类库的功能,可以通过访问者模式来提供该类库的扩展类,从而避免直接修改类库源码


2)中介者模式(mediator

有点像外观模式,侧重点不同,外观模式侧重提供一组接口供外部使用;

中介者模式,则侧重点在于,避免类A与类B间的相互关联。即删掉该中介者类,类A、类B依然是完整的,只是2者间少了成关系

例如,编写一个带有缓存功能的数据库类,该类就可以做成中介者,内部引用数据库组件 缓存组件,从而避免的 数据库组件、缓存组件之间需要相互联系


3)解释器模式(interpreter

通过提供一个上下文环境类,使各种操作基于此上下文环境做各种实现

例如,web服务器都会提供web上下文环境,里面提供了requestsessionapplication等信息

例如,游戏服务器也可以抽象出服务器上下文运行环境,提供session管理,安全连接等等一系列操作

0 0
原创粉丝点击