现有一个人类类:Person,他有两眼两耳两鼻一嘴,两手两脚,手和脚可以分别有写字或者打球的方法。
如果要设计这个Person,嘴可以设计一个对应的类,但有两个的怎么设计,比如两手和两脚该怎么设计。
有下面几种情况,以手为例:
一,设计一个手类,然后再设计两个子类:左手类和右手类,如下所示:
class Person{
LeftHand left;
RightHand right;
}
class Hand{}
class LeftHand extends Hand{}
class RightHand extends Hand{}
二,设计一个手类,在Person类中设计两个Hand,如下所示:
class Person{
Hand left;
Hand right;
}
class Hand{}
三,设计一个手类,在Person类中设计一个Hand的集合,如下所示:
class Person{
//key可以为left或者right
Map hands;
}
class Hand{}
大家觉得这三种方式哪种比较好?
或者还有更好的方式?
另外,我们在设计一个类且这个类还关联多个别的类的时候,有什么样的原则没?