为什么要等待,通知和通知类Object的所有方法?

时间:2014-12-30 15:15:05

标签: java oop single-responsibility-principle

这些方法有没有理由属于java.lang.Object?

由于这些方法是在java.lang.Object中声明的,因此每个类都将继承它们 这意味着像String,ArrayList等类也会拥有它们。

是否与单一责任原则相矛盾?

  

重要通知:我不是在问:

     
      
  • 为什么这些方法不属于Thread
  •   
  • 为什么每个对象都可以被锁定
  •   

1 个答案:

答案 0 :(得分:1)

方法被继承的事实并没有违反单一责任原则。如果可以覆盖这些方法,它可能会违反SRP。但他们不能,他们被宣布为final

The SRP defines reponsibility

  

在单一责任原则(SRP)的背景下,我们定义   责任是“改变的理由。”如果你能想到更多   改变一个班级的动机不止一个,那个班级就有更多   一个责任。

使用concurrent programming管理threads的责任落在拥有该实施的Object类上。该责任与Object或其任何子类型中定义的任何其他责任之间没有任何联系。如果您需要更改wait的行为,您只需要更改Object(可能还有任何通话网站),而不是String,而不是List ,而不是别的什么。

你可能想要争辩说Object类本身并不具有凝聚力并试图做太多:克隆,比较对象的相等性,生成String表示等。然后可以争辩说这些东西都没有与另一个相关联,所以它不是问题。