public partial class frmNumericCondition : Form, IExpressionForm
{
public frmNumericCondition()
{
InitializeComponent();
}
public ConditionItemEntity CIEntity { get; set; }
public ConditionBranchEntity CBEntity { get; set; }
public event Handle OnExpressionHandled;
}
然后是字符型参数条件添加窗体
复制代码 代码如下:
public partial class frmVarcharCondition : Form, IExpressionForm
{
public frmVarcharCondition()
{
InitializeComponent();
}
public ConditionItemEntity CIEntity { get; set; }
public ConditionBranchEntity CBEntity { get; set; }
public event Handle OnExpressionHandled;
}
以此类推,实现其它参数类型条件添加的窗体。
那我这样实现的目的的好处是什么呢?接下来我们来看看,我定义的一个产生窗体的函数
复制代码 代码如下:
public static IExpressionForm CreateExpressionForm(ConditionType ct)
{
IExpressionForm frm = null;
if (ct == ConditionType.bit)
frm = new frmBitCondition();
else if (ct == ConditionType.datetime)
frm = new frmDateTimeCondition();
else if (ct == ConditionType.numeric)
frm = new frmNumericCondition();
else if (ct == ConditionType.varchar)
frm = new frmVarcharCondition();
return frm;
}
从定义中我们可以看出,返回值类型为IExpressionForm ,是我在上边定义的接口。因此该函数可以返回一切实现了IExpressionForm 接口的类。如frmVarcharCondition 和frmNumericCondition.
这样就简单的实现了工厂模式,程序可以用很好的扩展性。
以上只是接口的应用场景之一,也是自己在写代码的时候发现的。写的不好。但也要写,一方面是要总结工作和学习,在总结的时候可以思考和发现,也希望能给阅读文章的人一些帮助。
您可能感兴趣的文章: