joe*_*dev 5 c# oop inheritance interface
当我向另一个问题提出答案时,我想到了这个问题.假设我有一个基类
public abstract class BaseClass {}
Run Code Online (Sandbox Code Playgroud)
有一些相当数量的派生类 - 让我们说超过六个.大多数派生类除了从基类继承之外没有任何相似性,但是其中两个具有相似性
public class OneOfMyDerivedClasses : BaseClass
{
public string SimilarProperty {get; set;}
//Other implementation details
}
public class AnotherOneOfMyDerivedClasses : BaseClass
{
public string SimilarProperty {get; set;}
//Other implementation details, dissimilar to those in OneOfMyDerivedClasses
}
Run Code Online (Sandbox Code Playgroud)
而已.这是任何子类除了继承之外的唯一相似之处BaseClass.在我的实际应用程序中,我通过IHaveSimilarProperty定义单个SimilarProperty属性的接口解决了这个问题,因为我关心的是一个对象实现了所使用的接口.但是由于我有重复,我应该为这两个派生类定义一个中间基类来继承,即
public abstract IntermediateBaseClass : BaseClass
{
public string SimilarProperty {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我也可以结合两种方法,用界面装饰中间类......
所以我的问题在于是否足够重复以保证OOP最佳实践方面的中间基类.我是否应该积极地消除所有重复,或者我应该采取更务实的方法?如果是后者,哪些经验法则会促使我选择一种方法而不是另一种方法呢?
任何设计模式都可以走极端。以下是我在决定是否进行子类化时会使用的一些一般准则:
在您的情况下,由于唯一的相似之处似乎是两个类中具有相同名称的属性,因此可能不值得进行子类化。
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |