是否需要对象模型?

不必为部件创建一个非常精致的对象模型。一个控件部件(.ocx 文件)可能只包含三个 UserControl 对象,而根本没有类模块。一个作为简单函数库的代码部件可能只有一个含有无数个方法的全局对象。

另外,可能要创建一个名为 Finance 的代码部件,该部件拥有三个类,每个类代表一条独立的商业规则。如果这些规则彼此无关,则没有必要构造分层结构。使用这些规则的客户端应用程序只需在必要时创建每个类的一个或多个对象。

这种部件中的每一个类模块都可以将其 Instancing 属性设为 MultiUse,以便客户端应用程序可以创建这些类的对象,也使该部件可以管理每类的多个对象。图 6.5 显示了一种这样的对象模型。

图 6.5   具有多个外部可创建对象的平面对象模型

对象模型与接口

随着对象功能的增加,对象接口也日趋复杂。这将导致对象使用更加困难。

要降低对象缺省接口的复杂度,可以把接口分解为相关的函数组,并为每个函数组定义一个接口。客户端可以只使用提供所需功能的接口。

用这种方式来定义标准接口,就可以实现其它对象的接口,获得多态性的优点。这种软件设计方案在本章前面的“通过接口的实现提供多态性”中论述。

有时,即使把一个对象的功能分解为独立的接口还是显得太大。当对象变得非常复杂时,例如 TreeView 和 Toolbar 控件,此时分解为几个独立的对象来实现会更有效。

一旦整个对象被划分,则需要一种将各个组成部分组织起来的方法。如果从 TreeView 控件中分出 Node 对象,但又不能说明它们之间的关系,那么将一无所获。对象模型可以方便地为该部件的用户提供这种组织方法。

详细信息   有关对象模型的主题列在“组织对象:对象模型”。使用多个接口则包含在“通过接口的实现提供多态性”。