关于接口的使用


      概述: 接口的使用体现了一种泛化的思想。

        应用场景之一是:

       (1)多个类都要实现某些动作,而该动作具体实现的方式又不一样。

        如对于创建条件来的窗体来说,要实现添加整形参数,bool类型参数和字符串类型参数的条件添加的窗体。而在具体的实现整形和字符串的窗体,以及bool类型的添加的窗体过程中,实现细节又不一样。

1 public interface IExpressionForm
2
3 {
4
5 ConditionItemEntity CIEntity { get; set; }
6
7 ConditionBranchEntity CIEntity { get; set; }
8
9 event Handle OnExpressionHandled; }

      

  而对于每个窗体来说,都需要包含CIEntity,CIEntity属性和OnExpressionHandled添加条件后的事件,因此在IExpressionForm  接口中定义了CIEntity,CIEntity,和OnExpressionHandled。

接着实现整形参数的条件添加窗体

  

 1 public partial class frmNumericCondition : Form, IExpressionForm
2 {
3 public frmNumericCondition()
4 {
5 InitializeComponent();
6 }
7
8 public ConditionItemEntity CIEntity { get; set; }
9 public ConditionBranchEntity CBEntity { get; set; }
10 public event Handle OnExpressionHandled;
11 }

 

  然后是字符型参数条件添加窗体

 1 public partial class frmVarcharCondition : Form, IExpressionForm
2 {
3 public frmVarcharCondition()
4 {
5 InitializeComponent();
6 }
7
8 public ConditionItemEntity CIEntity { get; set; }
9 public ConditionBranchEntity CBEntity { get; set; }
10 public event Handle OnExpressionHandled;
11 }

 

以此类推,实现其它参数类型条件添加的窗体。

 

 

 

那我这样实现的目的的好处是什么呢?接下来我们来看看,我定义的一个产生窗体的函数

 1 public static IExpressionForm CreateExpressionForm(ConditionType ct)
2
3 {
4
5 IExpressionForm frm = null;
6
7
8
9 if (ct == ConditionType.bit)
10
11 frm = new frmBitCondition();
12
13 else if (ct == ConditionType.datetime)
14
15 frm = new frmDateTimeCondition();
16
17 else if (ct == ConditionType.numeric)
18
19 frm = new frmNumericCondition();
20
21 else if (ct == ConditionType.varchar)
22
23 frm = new frmVarcharCondition();
24
25
26
27 return frm;
28
29 }


 

从定义中我们可以看出,返回值类型为IExpressionForm ,是我在上边定义的接口。因此该函数可以返回一切实现了IExpressionForm 接口的类。如frmVarcharCondition 和frmNumericCondition.

 

 

这样就简单的实现了工厂模式,程序可以用很好的扩展性。

以上只是接口的应用场景之一,也是自己在写代码的时候发现的。写的不好。但也要写,一方面是要总结工作和学习,在总结的时候可以思考和发现,也希望能给阅读文章的人一些帮助。

 

posted on 2011-12-15 10:21  Tasting  阅读(408)  评论(1编辑  收藏  举报

导航