我有一个模式的类层次结构:模式分为简单模式和复合模式,两者都有具体的实现。
模式有Match
方法,返回Result
,可以是Node
或Error
。
匹配时,所有模式都可以检查记忆结果。简单模式会在EOF上返回错误。
是否有一种模式允许以更简单的方式重用已实现的功能而不是我的?我们假设我们使用的是单继承,单调度语言,如C#或Java。
我的方法是仅在模式级别实现Match
,并在其中调用受保护的抽象方法InnerMatch
。在简单的模式级别,InnerMatch
被实现来处理EOF并调用受保护的抽象InnerInnerMatch
,这是具体实现定义其特定功能的地方。
我发现这种方法比向out bool handled
添加Match
参数并在每个类中明确调用基本方法更好,但我不喜欢我必须如何定义新方法。是否有描述更好解决方案的设计模式?
答案 0 :(得分:0)
策略模式(也称为策略模式)是一种软件设计模式,可以在运行时选择算法的行为。战略模式
- 定义了一系列算法,
- 封装每个算法,
- 使算法在该系列中可互换。
责任链模式是一种设计模式,由命令对象源和一系列处理对象组成。每个处理对象都包含定义它可以处理的命令对象类型的逻辑;其余的传递给链中的下一个处理对象。还存在一种机制,用于将新处理对象添加到该链的末尾。
但责任链更多地取决于您希望如何处理允许多个“模式”(您的对象,而不是“设计模式”)按顺序“处理”。
责任链也可能有助于您拥有可以处理不同输入的动态模式“集”。 (根据您的需要。)
你必须封装你的输入值,但这并不算太大。