技术开发 频道

接口在面向对象开发中的使用

这里下载源码(C#05,VWD05,.Net2.0)

  [IT168 技术文档]这是一个很小的功能,说明起来可能更容易些。需求很简单,实现对用户访问行为的记录。为了简单起见,有些东西省略了。旨在抛砖引玉,仓促之中,瑕疵甚多。

  1,需要记录的页面类型可能许多,并且每一个记录又各有各的要记录的参数。2,记录的动作是肯定有的。3,有不同数目,不同名字的记录参数也是一定的。这些定性的东西是面向对象思考的根据。接下来从不同方面说一下:

  一,记录类型的是显式的,在一个enum中定义所有记录类型的名称,这样做为了让记录类型对扩展者和调用者透明,他们访问TrackRecordType,可以知道现在系统中有哪些记录类型。扩展者扩展记录类型时,需要在此添加新成员,通知系统有新成员加入。
 1 using System;
 2 
 3 namespace Sban.Analytics
 4 {
 5     /// <summary>
 6     /// Summary description for TrackRecordType
 7     /// </summary>
 8     [Flags]
 9     public enum TrackRecordType : byte
10     {
11         BookPageTrackRecord = 0,
12         SeachPageTrackRecord
13     }
14 }
15 


  二,记录的动作在一个接口中定义,这样做一是为了扩展时有一个统一的约束,二是为了在下面的TrackRecordFactory工厂中可以动态调用。可以考虑用virtual class。这个接口极其简单,只有一个函数。面向对象不怕简单,越简单越好。Track接受一个自定义的参数(TrackRecordParameter param,下面三中提到),用于向记录动作提供所需信息。
 1 using System;
 2 
 3 namespace Sban.Analytics
 4 {
 5     /// <summary>
 6     /// Summary description for ITrackRecorder
 7     /// </summary>
 8     public interface ITrackRecord
 9     {
10         bool Track(TrackRecordParameter param);
11     }
12 }
13 

0
相关文章