【问题标题】:Correct approach to storing different types in two subclasses在两个子类中存储不同类型的正确方法
【发布时间】:2014-05-18 16:44:28
【问题描述】:

我正在使用 C# 编写具有两个子类的 AbstractTriangle 层次结构:Triangle 和 SpecialTriangle。

三角形是由直线组成的,但 SpecialTriangles 是由 SpecialLines 组成的!

我可以想出多种方法将线存储在三角形中:

  1. AbstractTriangle 包含一个 AbstractLine 列表
  2. AbstractTriangle 包含 ILine 列表
  3. ITTriangle 拥有 ILine 列表的访问器,Triangle 和 SpecialTriangle 负责各自的 Line 或 SpecialLine 列表

处理这些层次结构的正确、最优雅的方式是什么?

我是否需要牺牲返回具体类型线的三角形才能使其正常工作?

【问题讨论】:

    标签: c# inheritance interface composition


    【解决方案1】:

    使用泛型而不是继承:

    class Triangle<T> where T: ILine
    {
        List<T> edges;
        ···
    }
    

    然后将其实例化为

    Triangle<Line> 
    

    Triangle<SpecialLine>
    

    【讨论】:

      猜你喜欢
      • 2018-10-29
      • 2012-11-26
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多