你让那些程序员去搞一个设计,很有能他会给你拿一个E-R图来,或者类似的东西,总之,他的图里包含了很多属性、数据,也不知道要实现什么功能。这就是典型的“一叶障目”。
设计一个“森林”的时候,其中某一篇叶子该怎么样,是不需要你去关心的。
另外,每次划分一个类时,应该从外部使用者的角度去看待你要设计的类,外部使用者关心什么的功能(方法),这个类的属性还是其次的东西。一般来说,类的属性是,实现这个类的编程人员,为了编码的方便而选用的变量。
例如,橡皮擦,在建模时,很多人可能可能会说:
------------------
| 橡皮擦 |
------------------
| 橡皮 |
------------------
| 擦( ) |
------------------
的确,实际是这样,橡皮擦是应该包含属性:橡皮。
但是,对于使用者来说,是橡皮作的,还是塑料作的,有关系吗?
我儿子就用,胶带沾,不用有橡胶属性的东西。
所以,从外部使用者来看,橡皮擦就是
------------------
| 橡皮擦 |
------------------
| |
------------------
| 擦( ) |
------------------
也许需要一个属性,那不是你,作为一个设计者应该关心的事情
设计一个“森林”的时候,其中某一篇叶子该怎么样,是不需要你去关心的。
另外,每次划分一个类时,应该从外部使用者的角度去看待你要设计的类,外部使用者关心什么的功能(方法),这个类的属性还是其次的东西。一般来说,类的属性是,实现这个类的编程人员,为了编码的方便而选用的变量。
例如,橡皮擦,在建模时,很多人可能可能会说:
------------------
| 橡皮擦 |
------------------
| 橡皮 |
------------------
| 擦( ) |
------------------
的确,实际是这样,橡皮擦是应该包含属性:橡皮。
但是,对于使用者来说,是橡皮作的,还是塑料作的,有关系吗?
我儿子就用,胶带沾,不用有橡胶属性的东西。
所以,从外部使用者来看,橡皮擦就是
------------------
| 橡皮擦 |
------------------
| |
------------------
| 擦( ) |
------------------
也许需要一个属性,那不是你,作为一个设计者应该关心的事情