对一个类设计的思考

现有一个人类类: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{}

大家觉得这三种方式哪种比较好?
或者还有更好的方式?
另外,我们在设计一个类且这个类还关联多个别的类的时候,有什么样的原则没?

感觉第三种更好,可扩展性更好。

这样设计的话,粒度太细,你会发现有添加不完的方法。手有写的功能,还有拿,抓,拉,捏,拧……,好多方法。
我个人认为是不要这么做。
把这些方法就当作人的工能。
[code="java"]
class Person{
protected void eat(){
}
protected void write(){
}
protected void run(){
}
……
}[/code]

可以参考[color=red]装饰模式(Decorator)[/color],动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。把所需的功能按正确的顺序串联起来进行控制 装饰模式:[url]http://iblike.iteye.com/blog/1122315[/url]