GOF中未提到的设计模式

GOF中未提到的设计模式

ID:37929941

大小:110.20 KB

页数:16页

时间:2019-06-03

GOF中未提到的设计模式_第1页
GOF中未提到的设计模式_第2页
GOF中未提到的设计模式_第3页
GOF中未提到的设计模式_第4页
GOF中未提到的设计模式_第5页
资源描述:

《GOF中未提到的设计模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、GoF著作中未提到的设计模式(1):Archetype 半天也没能给这个设计模式想出一个中文名称,算了,有时候还是原版的更容易理解。 简单地说,Archetype设计模式的目的是将业务处理逻辑和具体实现分离,所以至少需要两个参与者:Decorator和Delegate,它们都实现同一个接口,Decorator负责处理业务逻辑,而Delegate负责具体的实现,在Decorator的通用业务逻辑处理过程中,会把具体实现委派给Delegate。(注:这里的Decorator并不是指”装饰者“设计模式) 咱们还是用个例子讲吧,假设系统中有一个记录各种事件的接口:publicint

2、erfaceEventRecorder{//记录事件的内容publicvoidrecord(Stringevent);} 引入两个抽象类来达到处理逻辑和具体实现分离的目的: publicabstractclassEventRecorderDecoratorimplementsEventRecorder{protectedEventRecorderDelegatedelegate;publicvoidsetDelegate(EventRecorderDelegatedelegate){this.delegate=delegate;}}publicabstractclassEv

3、entRecorderDelegateimplementsEventRecorder{} 下面是两个简单的逻辑处理(Decorator)类://简单的事件记录类publicclassSimpleEventRecorderextendsEventRecorderDecorator{publicvoidrecord(Stringevent){//附加当前的日期到事件的内容中event=getDate()+event;//当内容过长时省略显示event=ellipseText(event);//记录事件的内容delegate.record(event);}}//复杂的事件记录类p

4、ublicclassComplicateEventRecorderextendsEventRecorderDecorator{publicvoidrecord(Stringevent){//附加当前的日期到事件的内容中event=getDate()+event;//附加当前异常信息到事件的内容中event=event+getExceptionText();//附加当前的内存、CPU占用率到事件的内容中event=event+getMachineStatus();//当内容过长时省略显示event=ellipseText(event);//记录事件的内容delegate.re

5、cord(event);}} 可以看到,最后一步都交给了EventRecorderDelegate对象,这一步就是之前所说的“具体实现”,有以下几种记录事件内容的可能性:1、记录到数据库中2、记录到本地文件中3、通过邮件发送4、发送到远程服务器中 所以我们需要新建四个EventRecorderDelegate的派生类来实现这些记录方式: publicclassRecordEventToDatabaseextendsEventRecorderDelegate{publicvoidrecord(Stringevent){//将记录写入到数据库中}}publicclassReco

6、rdEventToFileextendsEventRecorderDelegate{publicvoidrecord(Stringevent){//将记录写入到文件中}}publicclassRecordEventByEmailextendsEventRecorderDelegate{publicvoidrecord(Stringevent){//将记录发送到指定的邮箱}}publicclassRecordEventToRemoteServerextendsEventRecorderDelegate{publicvoidrecord(Stringevent){//将记录发送

7、到远程服务器上}} 下面是一个生成事件记录对象的工厂: publicclassEventRecorderFactory{publicstaticEventRecordercreate(inttype,intflag){EventRecorderDelegatedelegate=null;EventRecorderDecoratordecorator=null;if(type==0)decorator=newSimpleEventRecorder();if(type==1)decorator=newComplicat

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。