现在的位置: 首页 > 综合 > 正文

泛型解决实际开发应用一例

2011年05月03日 ⁄ 综合 ⁄ 共 956字 ⁄ 字号 评论关闭

泛型有什么好处就这里就不介绍,因为网上有更多详尽的资料。下面看一下相关情况的类结构图:



以上是制定业务处理的基础规则结构图,里面分别描述了基于泛型的查询基础规则(
QueryAdapterAs)和不基于泛型的查询基础规则(QueryAdapter;两者完成的功能都是对IFilter描述信息进行数据查询。

使用代码:

QueryAdapter query = new QueryAdapter();

CategoryFilter filter = new CategoryFilter();

filter.CategoryName = textBox1.Text;

query.Filter = filter;

query.Execute();

 

QueryAdapterAs<CategoryFilter> queryas = new QueryAdapterAs<CategoryFilter>();

queryas.Filter.CategoryName = textBox1.Text;

query.Execute();

 

从使用方便性上QueryAdapterAs要比QueryAdapter方便,更重要的一个问题就是QueryAdapterAs在定义时就必须提供相关相关Filter信息,虽然QueryAdapter可以通过构造函数来约束必须提供Filter对象;但由于IFilter只能体现自有信息,在操作访问实现者成员时很不方便。

除了面对以上使用问题外,还要有扩展的问题:

  class CategoryQuery:QueryAdapter

  {


 
}

当需要从QueryAdapter派生出新的查询类来完成更具体功能时问题就来了,按道理CategoryQueryFilter必须相关的对象信息,但是Filter成员确以IFilter的方式体现;就是说使用者完全可以设置其他的Filter对象(会产生什么问题大家也能相到)。

通过泛型就能解决这隐蔽的问题,因为在派生时就已经明确相关Filter具体类型;由于使用规则明确,使用者就没有机会犯那种错误。

    class CategoryQuery:QueryAdapterAs<CategoryFilter>

    {

 

}

虽然以上描述的问题不需要泛型也能解决,但泛型提供更方便高效的方式;既然这样我们没有理由不去采用她。

抱歉!评论已关闭.