在设计对象的过程中,我认为设计并不是从内而外,而应该是从外而内。
对象的存在,是因为它所呈现的外观特性。
就好像人,你看一个人不是看他内心,因为你也看不到,你是通过它的行为表现,观其行,听其言来确立他的个性的。
设计一个对象,首先不是看他到底有什么,而是看我们需要他有什么;不是从独立个体的角度出发,而是看其在整体中,在作为服务器的角色中,提供那些别人需要的服务。然后我们才开始思考内部应该如何设计,才能呈现这些接口。因此,“人”可以生老病死,但对于有限的环境来说,我们只需要完成他所担当的角色便足已。
设计一个对象的初期,首先确立接口和使用的环境,是很重要的。一个可以为你提供清晰的目标,有助功能的完成;另一个可以为你提供一个与群体融合的案例,不会等写完之后,才发现客户代码非常费解,容易误会,难以编写正确。对象的一个目的,是为了提供一个易于使用的接口,而不是完成其自身功能的功能集合便可。另外,也避免了功能过剩,暴露一些不必要的接口,将对象变成一个大而全的万能插座。