对于实现"提前退出"的基本方法,是否存在普遍接受的设计模式?功能?

时间:2015-12-28 06:52:35

标签: oop design-patterns override base-class virtual-method

我有一个模式的类层次结构:模式分为简单模式和复合模式,两者都有具体的实现。

模式有Match方法,返回Result,可以是NodeError

匹配时,所有模式都可以检查记忆结果。简单模式会在EOF上返回错误。

是否有一种模式允许以更简单的方式重用已实现的功能而不是我的?我们假设我们使用的是单继承,单调度语言,如C#或Java。

我的方法是仅在模式级别实现Match,并在其中调用受保护的抽象方法InnerMatch。在简单的模式级别,InnerMatch被实现来处理EOF并调用受保护的抽象InnerInnerMatch,这是具体实现定义其特定功能的地方。

我发现这种方法比向out bool handled添加Match参数并在每个类中明确调用基本方法更好,但我不喜欢我必须如何定义新方法。是否有描述更好解决方案的设计模式?

1 个答案:

答案 0 :(得分:0)

可能是Strategy pattern

  

策略模式(也称为策略模式)是一种软件设计模式,可以在运行时选择算法的行为。战略模式

     
      
  • 定义了一系列算法,
  •   
  • 封装每个算法,
  •   
  • 使算法在该系列中可互换。
  •   

也许Chain of Repsonsibility

  

责任链模式是一种设计模式,由命令对象源和一系列处理对象组成。每个处理对象都包含定义它可以处理的命令对象类型的逻辑;其余的传递给链中的下一个处理对象。还存在一种机制,用于将新处理对象添加到该链的末尾。

但责任链更多地取决于您希望如何处理允许多个“模式”(您的对象,而不是“设计模式”)按顺序“处理”。

责任链也可能有助于您拥有可以处理不同输入的动态模式“集”。 (根据您的需要。)

你必须封装你的输入值,但这并不算太大。