zoukankan      html  css  js  c++  java
  • 集合设计

     

    什么叫集合

    集合是指可以在运行时添加、修改和删除数据的数据结构,在.NET中最常见的就是CollectionListDictionary。关于集合的基本概念我就不在此谈论,大家可以看看MSND,或参考:

    .NET 2.0泛型集合类与.NET 1.1集合类的区别(一)

    .NET 2.0泛型集合类与.NET 1.1集合类的区别(二)

    .NET 2.0泛型集合类与.NET 1.1集合类的区别(三)

    这篇文章中我将重点说明如何设计良好的集合。

    设计良好的集合

    l         可达的

    所谓可达的,就是指你的集合实例必须能够被访问到,例如在Word中你可以通过下面的句子访问到所有的文档:

    Application.Documents

    l         可控制的

    如果需要,你的集合类还应该包含必要的访问方法,例如Add、索引和Remove方法,这些使外界可以控制集合。

    l         强健的

    你的集合对外界的访问必须是强健的,这不仅仅包括集合的强类型,还包括诸如没有中间状态,例如最好不要这样设计:

    Windows.Add(new Window());

    Windows.EndAdd();

    上面的例子中如果没有及时调用EndAdd就可能造成中间状态,如果你为了提高性能,你可以不使用Begion/End的设计方式,而是允许传入一个数组的方式批量加入。

    通常你不应该公开不需要的变量。

    l         可跟踪的(增强)

    这一点不是必须的,实现IBindingList可以让外界跟踪集合的变化,但你必须在性能上作出牺牲(当然牺牲并不大)。

    l         延迟填充(增强)

    并不是所有的集合实例总是在内存中一直存在,有些集合可能生命周期很短,例如环境菜单,他需要在点击右键时才能决定如何构建菜单,点击后集合也不再需要。另外一种需要预先填充数据的集合,例如包含所有实体类型定义的集合,包含所有数据库连接的集合,他们也适合使用延迟加载技术。

    通常你可以在集合中设计一个Reset方法,并包含Reseting事件,在事件参数中包含集合本身。这样外界就可以拦截此事件以便填充必要的默认数据。

  • 相关阅读:
    百度地图API示例之小实践 添加代理商标注
    MySQL分组操作
    MySQL连表操作
    MySQL多对多操作
    MySQL一对一操作
    MySQL唯一索引
    MySQL用户授权管理
    MySQL外键操作
    MySQL删操作
    MySQL增操作
  • 原文地址:https://www.cnblogs.com/tansm/p/538554.html
Copyright © 2011-2022 走看看