【问题标题】:Beginner Scalability [closed]初学者可扩展性[关闭]
【发布时间】:2013-04-08 08:41:02
【问题描述】:

就可扩展性而言,从具体类或接口创建对象更明智?

例如代替:

LinkedStack<Integer> list = new LinkedStack<Integer>();

应该是这样的:

StackInterface<Integer> list = new LinkedStack<Integer>();

【问题讨论】:

标签: java oop scalability


【解决方案1】:

在我看来:

LinkedStack<Integer> list = new LinkedStack<Integer>();

更好,如果您需要 LinkedStack 上未在 StackInterface 中声明的特定方法。

StackInterface<Integer> list = new LinkedStack<Integer>();

如果不这样做会更好,因为这样您就可以出于不同的原因(例如效率原因)“插入”接口的任何实现者。

【讨论】:

  • 我仍然找不到使用第一个选项的充分理由。如果我必须通过某种方式使用它,我更愿意将这部分代码封装在一个方法中,并带有注释警告,该方法将尝试将接口的特定实现用于非常特定的工作,例如TreeMapTreeSet.
【解决方案2】:

第二种方式称为code to interfaces

Reference link

第二种方式是可预知的。使用接口作为子类对象的引用。

【讨论】:

  • 这让我得到了答案,谢谢 NPKR。
猜你喜欢
  • 1970-01-01
  • 2011-03-17
  • 2020-07-25
  • 1970-01-01
  • 2018-10-07
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多