Oop 对于基本方法的实现,是否有一种普遍接受的设计模式;“提前退出”;功能?

Oop 对于基本方法的实现,是否有一种普遍接受的设计模式;“提前退出”;功能?,oop,design-patterns,overriding,base-class,virtual-functions,Oop,Design Patterns,Overriding,Base Class,Virtual Functions,我有一个模式的类层次结构:模式分为简单模式和复合模式,两者都有具体的实现 模式有一个匹配方法,该方法返回一个结果,该结果可以是节点或错误 匹配时,所有模式都可以检查记忆结果。简单模式在EOF上返回一个错误 有没有一种模式可以比我的模式更简单地重用实现的功能?假设我们使用的是单一继承、单一分派语言,如C#或Java 我的方法是仅在模式级别实现Match,并在其中调用受保护的抽象方法InnerMatch。在简单模式级别,实现了InnerMatch来处理EOF和受保护的抽象调用InnerMatch,这

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

模式有一个
匹配
方法,该方法返回一个
结果
,该结果可以是
节点
错误

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

有没有一种模式可以比我的模式更简单地重用实现的功能?假设我们使用的是单一继承、单一分派语言,如C#或Java

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

我发现这种方法比在
Match
中添加
out bool handled
参数并在每个类中显式调用基方法要好,但我不喜欢定义新方法的方式。是否有一种设计模式可以描述更好的解决方案?

可能

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

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

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

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

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


您必须封装您的输入值,但这没什么大不了的。

不要描述您的代码。张贴它。