`
West_Link
  • 浏览: 2179 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

GoF著作中未提到的设计模式(1): Archetype

阅读更多

  半天也没能给这个设计模式想出一个中文名称,算了,有时候还是原版的更容易理解。

  简单地说,Archetype设计模式的目的是将业务处理逻辑和具体实现分离,所以至少需要两个参与者:Decorator和Delegate,它们都实现同一个接口,Decorator负责处理业务逻辑,而Delegate负责具体的实现,在Decorator的通用业务逻辑处理过程中,会把具体实现委派给Delegate。
(注:这里的Decorator并不是指”装饰者“设计模式)

  咱们还是用个例子讲吧,假设系统中有一个记录各种事件的接口:
 

public interface EventRecorder{
      // 记录事件的内容
      public void record(String event);
  }
 

  引入两个抽象类来达到处理逻辑和具体实现分离的目的:
 

public abstract class EventRecorderDecorator implements EventRecorder{
      protected EventRecorderDelegate delegate;
      
      public void setDelegate(EventRecorderDelegate delegate){
          this.delegate = delegate;
      }
  }
 
  public abstract class EventRecorderDelegate implements EventRecorder{
  }
 

 
  下面是两个简单的逻辑处理(Decorator)类:
 
 

// 简单的事件记录类
  public class SimpleEventRecorder extends EventRecorderDecorator{
      
        public void record(String event){
            // 附加当前的日期到事件的内容中
            event = getDate() + event;
            // 当内容过长时省略显示
            event = ellipseText(event);
            // 记录事件的内容
            delegate.record(event);
        }
  }
 
  // 复杂的事件记录类
  public class ComplicateEventRecorder extends EventRecorderDecorator{
      
        public void record(String event){
            // 附加当前的日期到事件的内容中
            event = getDate() + event;
            // 附加当前异常信息到事件的内容中
            event = event+getExceptionText();
            // 附加当前的内存、CPU占用率到事件的内容中
            event = event+getMachineStatus();
            // 当内容过长时省略显示
            event = ellipseText(event);
            // 记录事件的内容
            delegate.record(event);
        }
  }
 

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

  public class RecordEventToDatabase extends EventRecorderDelegate{
      public void record(String event){
          // 将记录写入到数据库中
      }
  }
 
  public class RecordEventToFile extends EventRecorderDelegate{
      public void record(String event){
          // 将记录写入到文件中
      }
  }
 
  public class RecordEventByEmail extends EventRecorderDelegate{
      public void record(String event){
          // 将记录发送到指定的邮箱
      }
  }
 
  public class RecordEventToRemoteServer extends EventRecorderDelegate{
      public void record(String event){
          // 将记录发送到远程服务器上
      }
  }
  
 

  下面是一个生成事件记录对象的工厂:
 

public class EventRecorderFactory{
 
      public static EventRecorder create(int type, int flag){
          EventRecorderDelegate delegate = null;
          EventRecorderDecorator decorator = null;
          
          if(type == 0)
           decorator = new SimpleEventRecorder();
          if(type == 1)
           decorator = new ComplicateEventRecorder();
          
          if(flag == 0)
               delegate = new RecordEventToDatabase();
          if(flag == 1)
               delegate = new RecordEventToFile();
          if(flag == 2)
               delegate = new RecordEventByEmail();
          if(flag == 3)
               delegate = new RecordEventToRemoteServer();
          // 设置代理    
          decorator.setDelegate(delegate);    
      }
  }
 

  从我们举的例子中可以看到,有2种业务处理逻辑,有4个具体实现,它们组成了8种事件记录方式,另外,4个具体实现单独使用的话又有4种记录方式,实际上有12种事件记录方式。
 

 

  • 大小: 78.6 KB
0
0
分享到:
评论

相关推荐

    GOF设计模式中英文+设计模式精解中英文

    GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...

    GoF的经典著作设计模式(Design Pattern)

    《设计模式:可复用面向对象软件的基础》是Gang of Four(GoF)四位作者——Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著的一本经典书籍,它在软件工程领域具有深远影响。这本书系统地介绍了23种...

    GOF 设计模式 中文 高清

    《GOF设计模式》是软件工程领域的一部经典著作,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师合著,因此常被称为“Gang of Four”(GOF)的设计模式。这本书详尽地阐述了23种设计模式,这些...

    GOF23种设计模式

    GOF(GoF)23种设计模式,是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大神在他们的著作《设计模式:可复用面向对象软件的基础》中提出的,这些模式分为创建型、结构型和行为型三大类。...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    ### 设计模式精解——GoF 23种设计模式解析及C++实现 #### 0. 引言 设计模式作为面向对象编程的核心组成部分,是软件开发者在长期实践中总结出来的最佳实践。通过深入理解这些设计模式,我们可以更好地进行面向...

    Gof设计模式设计模式设计模式PDF

    《Gof设计模式设计模式设计模式PDF》是一个深入学习设计模式的重要资源,包含了全面而详尽的设计模式理论和实践知识。设计模式是软件工程中的一种最佳实践,它为解决常见问题提供了一种可复用的解决方案,使得代码...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    这些模式是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师,通常被称为GoF(Gang of Four),在他们的经典著作《设计模式:可复用面向对象软件的基础》中提出的。这本书详细阐述了23种设计...

    经典教程GOF设计模式(中文版)

    《经典教程GOF设计模式(中文版)》是学习软件设计模式的重要参考资料,它涵盖了GOF(Gamma, Helm, Johnson, Vlissides)四位大师提出的23种经典设计模式。设计模式是软件工程中经过实践验证的解决常见问题的最佳方案...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    ### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 0. 引言 设计模式是软件工程领域的一个重要概念,它提供了一种解决常见问题的方法论。GoF(Gang of Four)所提出的23种设计模式被视为面向对象设计的...

    设计模式精解-GoF 23种设计模式精解JAVA版 PDF

    著名的EJB领域顶尖的专家Richard Monson-Haefel在其个人网站:www.EJBNow.com中极力推荐的GoF的《设计模式》,原文如下: Design Patterns Most developers claim to experience an epiphany reading this book....

    GoF的23个经典设计模式

    以文本和思维导图的方式简明扼要的介绍了GoF的23个经典设计模式,可当成学习设计模式的一个小手册,偶尔看一下,说不定会对大师的思想精髓有新的领悟。

    GOF的23个设计模式

    《GOF的23个设计模式》是一本经典的设计模式指南,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者(通常称为“Gang of Four”,简称GOF)编写。这本书是软件工程领域的重要里程碑,详细阐述了...

    GOF之23种设计模式的C#实现:DesignPattern.zip

    "GOF之23种设计模式"是由四名作者——Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(通常称为Gang of Four,简称GOF)在他们的著作《设计模式:可复用面向对象软件的基础》中提出的。这些模式为创建可...

    设计模式精解- GoF 23种设计模式解析附C++实现源码

    设计模式精解- GoF 23种设计模式解析附C++实现源码 懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 一直想把自己的学习经验以及在...

    中文版GOF设计模式

    《中文版GOF设计模式》是一本面向中文读者的、详细阐述GOF设计模式的经典著作。GOF,全称为 Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides,这四位作者合著了《设计模式:可复用面向对象软件的...

    GOF设计模式双语版(设计模式经典之作)

    《GOF设计模式双语版》是一本设计模式领域的经典之作,它由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者共同撰写,因此在业界被广泛称为“Gang of Four”(GOF)的著作。这本书详尽地阐述了23...

    GOF的设计模式 中文清晰文字版

    《GOF的设计模式》是面向对象编程领域中的一本经典著作,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者合著,通常被简称为Gang of Four(GOF)设计模式。这本书详尽地阐述了23种经典的设计...

    GOF设计模式(中英文双语)

    GOF(Gang of Four)设计模式,又称为GoF设计模式,是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者在1994年出版的《设计模式:可复用面向对象软件的基础》一书中提出的。这本书被誉为设计...

    GoF+23种设计模式解析.pdf

    书中还特别提到如何在实际开发过程中体验设计模式的重要性,并通过具体案例来加深理解。例如,深入理解State模式并给出C++实现示例,以及探讨为什么使用设计模式——从Singleton模式谈起等内容。 #### 总结 《GoF+...

Global site tag (gtag.js) - Google Analytics