【问题标题】:What would be the correct design here (encapsulation, polymorphism, inheritance)?这里正确的设计是什么(封装、多态、继承)?
【发布时间】:2015-04-28 07:08:05
【问题描述】:

假设我有一个接口和 3 或 4 个实现该接口的类。现在假设我有另一种方法,但它只与一个或两个实现类相关。

所以我认为有两种方法

  1. 在接口中声明方法,在所有类中实现。在方法不相关的类中 - 抛出“不支持”异常。
  2. 仅在相关的实现类中声明该方法,但您必须将实例从接口类型向下转换为特定类型才能调用该方法。 你的设计也会在这里,为什么?

【问题讨论】:

    标签: oop inheritance design-patterns polymorphism encapsulation


    【解决方案1】:

    您应该在此处应用interface segregation principle,这是SOLID 原则的一部分。与其拥有一个大接口,不如将接口拆分成几个较小的接口。只在需要的类中实现接口。

    【讨论】:

      【解决方案2】:

      我会选择一个父界面。使满足接口的类实现该接口。创建第二个接口,扩展第一个接口并添加额外的方法,然后让其余类实现该接口。您仍然会编写接口而不是实现,并且您的所有设计原则都得到满足。

      【讨论】:

      • 感谢您的回答(没有足够的声誉来投票)
      • @user3734429 很高兴为您提供帮助!
      【解决方案3】:

      问问你自己,使用接口的对象是否一定希望这个函数存在? 无论您通过哪个接口实例,您仍然可以使用该方法,这一点很重要吗?

      如果该问题的答案是肯定的,1。如果不是,2。

      【讨论】:

      • 感谢您的回答(没有足够的声誉来投票)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 2011-03-13
      相关资源
      最近更新 更多