如果用接口来作为方法的返回类型,在.net中很适合这样做,比如要返回一个数组,可以用Ilist接口作为返回类型,返回一个对象,这个对象拥有这个接口的所有方法。当然不需要再这个方法中把所有的方法都实现然后返回,这样就增加了工作量,起不到很好的作用。最后的办法是用已经实现了这个接口的类来实例化这个接口对象,比如 IList obj = new ArrayList();这样obj就可以使用IList接口中的所有方法。如果是返回一个数组那么使用Add()方法就好了。
如果用类名来作为方法的返回类型,相当于在这个类中增加了一个方法,这个方法操作的是这个类中的字段。比如3层架构中经常要使用一个Model,数据实体类,主要是封装数据库每个表的每一列,为他们设置好属性。而他们的方法却在SqlServerDAL中或者ORacleDAL中,这样属性和方法分离,那么SqlServerDAL中的方法就应该以数据实体类为返回对象。
附上petshop中的2个方法,一个是用接口作为返回对象,另一个是用类名来作为方法的返回对象。
public
IList GetItemsByProduct(
string
productId)
...
{//返回一个数组
IList itemsByProduct = new ArrayList();
SqlParameter parm = new SqlParameter(PARM_PRODUCT_ID, SqlDbType.Char, 10);
parm.Value = productId;
//Execute the query against the database
using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ITEMS_BY_PRODUCT, parm)) ...{
// Scroll through the results
while (rdr.Read())...{
ItemInfo item = new ItemInfo(rdr.GetString(0).Trim(), rdr.GetString(1), rdr.GetDecimal(2), rdr.GetString(3), null);
//Add each item to the arraylist
itemsByProduct.Add(item);
}
}
return itemsByProduct;
}
/**/
/// <summary>
/// Get an individual item based on a the unique key
/// </summary>
/// <param name="itemId">unique key</param>
/// <returns></returns>
public
ItemInfo GetItem(
string
itemId)
...
{
//Set up a return value
ItemInfo item = null;
//Create a parameter
SqlParameter parm = new SqlParameter(PARM_ITEM_ID, SqlDbType.Char, 10);
//Bind the parameter
parm.Value = itemId;
//Execute the query
using (SqlDataReader rdr = SQLHelper.ExecuteReader(SQLHelper.CONN_STRING_NON_DTC, CommandType.Text, SQL_SELECT_ITEM, parm)) ...{
rdr.Read();
item = new ItemInfo(rdr.GetString(0).Trim(), rdr.GetString(1), rdr.GetInt32(2), rdr.GetDecimal(3), rdr.GetString(4), rdr.GetString(5));
}
return item;
}
使用接口与类名作为返回类型


被折叠的 条评论
为什么被折叠?



