【发布时间】:2011-01-21 09:23:55
【问题描述】:
我有一个抽象基类T,类A 和B 继承自该类。我现在有一个操作(在T 上),它需要在A 和B 中稍微不同的实现,但大部分代码是相同的。让我举个例子:有两种可能实现类似.Clone 的方法:
Public MustInherit Class T
Protected MustInherit Function _DoClone() As T
Public Function Clone() As T
Dim clone = Me._DoClone() ' do the subclass-specific stuff '
... ' do the shared stuff '
End Function
End Class
Public Class A
Inherits T
Protected Overrides Function _DoClone() As T
... ' do the subclass-specific stuff '
End Function
End Class
或
Public MustInherit Class T
Protected Sub _DoClone(clone As T)
... ' do the shared stuff '
End Function
Public MustInherit Function Clone() As T
End Class
Public Class A
Inherits T
Public Overrides Function Clone() As T
Dim clone = ... ' do the subclass-specific stuff '
Me._DoClone(clone)
End Function
End Class
(示例是在 VB.NET 中,但同样的问题适用于 C#、Java 等)
我的问题:
- 是否有明确首选的选项?
- 这是一个有名字的众所周知的模式吗(这样我可以做更多的研究)?
- 对于此类情况(即
_Do...事物)是否有完善的命名约定?
【问题讨论】:
-
绝对是第一种方法,它是 Anton Gogolev 提到的模板方法模式。
标签: .net language-agnostic oop