首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

19.5  基于角色的设计——使用角色组装协作

19.5.1  相关理论

协作被定义为“多个对象为了完成某种目标而进行的交互”。而角色是“特定协作中的对象的抽象”,它“仅定义了对象特征的一个对某协作有意义的子集”。协作和角色的概念和现实世界很接近,图19-7的例子展示了角色在协作中的作用。由例子可以看出,基于角色的设计的意义在于:我们很容易通过已有角色的组合来构造新的协作,以完成新的功能。

图19-7  角色与协作

接口隔离原则(Interface Separation Principle)信奉“多个专用接口优于一个单一的通用接口”的思想,因为“任何接口都应当具有高内聚性”,以便“保证实现该接口的类的实例对象可以只呈现为单一的角色”。

19.5.2  基于角色的设计举例

比如,待开发的一个软件系统,其后台数据源可能是关系数据库、一般的文件,还可能是另一个私有数据库。既然接口可以隔离变化,我们可以定义一个单一的接口,为所有的数据客户类提供服务。如图19-8所示。

图19-8  “宽”接口设计

但是,上面的设计违背了基于角色的设计思想,根本不能保证“实现该接口的类的实例对象可以只呈现为单一的角色”,这会带来一些问题。比如,有一个数据客户类,不需要插入、更新等功能,而仅仅需要对数据进行读操作,这时显然一个提供“读”服务的“角色”是最合理的设计,但CRowSetManager却是如此之“宽”的一个接口。最终,我们可以这样来改进设计,如图19-9所示。

图19-9  运用基于角色的设计进行接口隔离

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论