大家都知道“类是对象的抽象,接口是方法的抽象”,那么在机房重构中接口层是起到一个什么作用呢?是怎样发挥优势的呢?
why interface?
接口顾名思义应该具有简化的功能,在这里它可以把各种复杂的类中相似的方法用一个统一的方法名来表示放在一个接口中,通过工厂层反射回来的这个接口就可以直接实现很多的功能,而不用知道具体的实现过程。
怎样使用interface的优点?
抽象不同的类中的相似方法作为一个接口,让这几个类来实现这个接口。当然类里面还有其他的方法,可以继续抽象,因为类不仅可以实现一个接口。
建议:接口中的方法不要太多,适量就好,因为它的优点利用一个类可以实现多个接口变得更加灵活
示例:
//以D层是对表的操作为一个类的形式举例
public class StudentDAO:IQuery,Iinsert,Idelete,Iupdate
{
public void Query()
{
//查询学生
}
public void Delete()
{
//删除
}
public void update()
{
//更新
}
public void insert()
{
//插入
}
}
interface IQuery
{
void query();
}
interface Iinsert
{
void insert();
}
interface Idelete
{
void delete();
}
interface Iupdate
{
void update();
}
//工厂层:
public class StudentFactory
{
public static readonly string strDB = System.Configuration.ConfigurationManager.AppSettings["DB"];//读取配置文件
public IDAL.LoginIDAL SelectUser()
{
return (IDAL.LoginIDAL)Assembly.Load(strDB).CreateInstance("DAL.StudentDAO");
}
}
在重构里面我用到的接口的优点主要有:
对方法的隐藏,不用知道具体D层是如何实现的,只知道实现的功能是什么直接调用就行了。
换数据库的时候,不同的数据库D层只要实现相同的接口,其它层都不用变,只改变配置文件和工厂层的.CreateInstance(“你用到的类”);