关于面向对象的设计。最佳做法。分成几类?

时间:2011-05-25 13:47:14

标签: java oop

我正在为一次采访制作一个稍微复杂的谜题。我对设计的最佳实践知之甚少。

我想写一个大班,先解决手头的问题。然后我想把它分成尽可能多的子类。

这被认为是行业中建立良好设计的好方法吗?

3 个答案:

答案 0 :(得分:4)

没有。不是。

设计对象应该是您的首要任务之一,而不是您的最后一个。

一个优秀的面向对象的开发人员将查看问题,确定需要创建哪些对象,开始创建这些对象,然后将它们编织在一起以解决更大的问题。

如果你试图让一个巨大的类自己处理所有的工作,那么你将会得到一个非常紧密耦合的代码,这些代码不能被分成几类......但是如果你能够将它们分解成类...你事先正确设计了代码。

答案 1 :(得分:0)

我会尝试用你可能采取的方法回答。 首先将您的问题转换为您想要解决的一些句子。从这些句子中,名词是你的类和变量。动词是你的方法。从这一点开始,您可以开始编写第一个代码版本

答案 2 :(得分:0)

在为生产编写代码时,我的经验是实际的实践是在中间的某个地方。在设计系统时,请提出您认为需要的课程(请参阅Skyzer的答案,以便考虑解决问题)。当你实际实现你的解决方案时,你可能会达到某些对象变得太大的程度;做得太多了。此时,您可以再次查看设计,看看是否可以将对象分解为几个较小的对象。每个对象应该负责一个“事物”,但是什么是“事物”的定义可以随着时间的推移而改变,因为给定的“事物”变得更加复杂。

类似于这是方法/命令的编写。每个命令都应该做一件事,做得好。对我来说,这意味着为该命令编写测试很容易,因为测试可以非常清楚地定义命令的作用。当命令确实变得太大时(大量的逻辑分支,如果导致越来越多的测试是这个的一个很好的指示),将命令分解成多个,小的,每个都可以测试。