违反软件原则

时间:2014-07-08 13:20:57

标签: software-design

我正在阅读关于线程的内容,并且提到通过实现Runnable接口,我们违反了每个对象应该具有明确定义的单一责任的原则。有人可以解释它是如何违反软件原则的吗?

1 个答案:

答案 0 :(得分:1)

原则来自面向对象的建模社区。例如,在OO建模中,如果类“A”扩展为“B”,那么句子“A是一种B”应该具有某种意义。也许类“A”的模拟实现接口“C”是“A能够做C”?

让我们看一些例子:

public class Mammal extends Animal

这个例子读得很好:哺乳动物是一种动物。

现在让我们添加一些接口:

public class Mammal extends Animal implements Walking, Carnivorous

一切都还是好的:哺乳动物是一种能够行走和吃肉的动物。

现在让我们添加Runnable:

public class Mammal extends Animal implements Walking, Carnivorous, Runnable

阅读它:哺乳动物是一种能够行走,吃肉的动物,whose instances are intended to be executed by a thread.

这听起来不太好。哺乳动物与Java运行时环境及其线程有什么关系?哺乳动物是否应该知道它们是在计算机中运行的模型?从面向对象建模的角度来看,答案是明确的:哺乳动物与JRE线程无关,不应实现Runnable接口