简单工厂模式小谈
时间:2010-10-04 来源:张静静
今天学习了简单的工厂模式,总的来说它分为七层:
1.网站项目:
我们在网站项目添加引用时只需要引用BLL层就可以。 2.Data(Model)程序集:用来放数据实体类 3.IDAL程序集:用来放针对表的操作接口(增删改查等),包括每个表中各个方法的声明。 4.OledbDAL(SqlDAL):实现针对表的操作,其中要写helper类,和实现IDAL中操作的类。它最重要的作用就是实现IDAL中所有的方法。这样在以后我们需要调用底层方法时可以直接的通过声明接口来实现方法的调用。注:把SqlDAL也当做一层就是所谓的七层。 5.DALFactory程序集:工厂,用来实现对不同数据库操作类对象的创建。它有两种方式。一种是通过switch、case的方式,另一种是通过反射的方式。当然,第一种没有第二种的使用灵活但是它的性能却比反射方式的要强,如果我们已经确定使用数据库的种类,那么就可以使用switch、case的方式。如果对于数据库的种类还不确定,以后还要加别的不知道的类型,那么这时候反射就起到很大的作用了。下面是一个简单工厂中的一部分代码包括两种方式的实现。
string dal = ConfigurationSettings.AppSettings["Dal"];//Dal与Web.config中的key值对应找到value值
//另一种实现继承的方式通过封装属性
private static Factory instance; public static Factory Instance
{
get { return new Factory(); }
}
public IDAL.IAdminUsers GetAdminUsers()
{
//第一种实现方式
//IDAL.IAdminUsers adminusers = new OledbDAL.AdminUsers();
//switch (dal)
//{
// case "Oledb"://Oledb与Web.config中的key值对应找到value值但是value值不一定和OledbDAL.AdminUsers();中的OledbDAL一致。
// adminusers = new OledbDAL.AdminUsers();
// break;
// case "Sql":
// adminusers = new SqlDAL.AdminUsers();
// break;
//}
//return adminusers;
//第二种实现方式
//Oledb与Web.config中的key值对应找到value值但是value值必须和OledbDAL.AdminUsers();中的OledbDAL一致
object obj = Assembly.Load(dal).CreateInstance(dal + ".AdminUsers"); //通过程序集路径和类名创建对象实例(反射)
return (IDAL.IAdminUsers)obj;
} 6.BLL程序集: 业务逻辑层,用来针对功能方法,调用不同表的操作。在业务层我们需要调用实体,就需要Data来实现,有了实体类就需要操作类。而这个操作类则需要我们在先前提到的接口的声明中去实现。然后需要通过DALFactory去得到要操作类型的数据库。也可以说是通过DALFactory中的方法去得到实体类,而这个方法的返回类型为接口类型。下面是一个BLL层的
一个方法使用的例:
public static bool Login(string name,string pwd)
{
Data.AdminUsers au = new Data.AdminUsers();//声明实体类
au.Username = name;
au.Userpwd = pwd;
IDAL.IAdminUsers adu =DALFactory.Factory.Instance.GetAdminUsers();//相当于操作类
adu.GetData(au);
DataTable dt=adu.Login();
if (dt.Rows.Count > 0)
{
return true; }
else
{
return false;
}
}
他们每一层的引用关系可分为:
1.IDAL引用DATA
2.OledbDAL(SqlDAL) 引用 IDAL和Data(Model)
3.DALFactory 引用 IDAL,Data(Model),OledbDAL(SqlDAL)
4.BLL 引用 DALFactory,IDAL,Data(Model)
5.网站项目: 引用 BLL
最后我们需要注意一点的是类的继承可以通过:去实现也可以通过属性的封装去实现。当一个类同时继承类和接口时应该先写类再加上,写接口
1.网站项目:
我们在网站项目添加引用时只需要引用BLL层就可以。 2.Data(Model)程序集:用来放数据实体类 3.IDAL程序集:用来放针对表的操作接口(增删改查等),包括每个表中各个方法的声明。 4.OledbDAL(SqlDAL):实现针对表的操作,其中要写helper类,和实现IDAL中操作的类。它最重要的作用就是实现IDAL中所有的方法。这样在以后我们需要调用底层方法时可以直接的通过声明接口来实现方法的调用。注:把SqlDAL也当做一层就是所谓的七层。 5.DALFactory程序集:工厂,用来实现对不同数据库操作类对象的创建。它有两种方式。一种是通过switch、case的方式,另一种是通过反射的方式。当然,第一种没有第二种的使用灵活但是它的性能却比反射方式的要强,如果我们已经确定使用数据库的种类,那么就可以使用switch、case的方式。如果对于数据库的种类还不确定,以后还要加别的不知道的类型,那么这时候反射就起到很大的作用了。下面是一个简单工厂中的一部分代码包括两种方式的实现。
string dal = ConfigurationSettings.AppSettings["Dal"];//Dal与Web.config中的key值对应找到value值
//另一种实现继承的方式通过封装属性
private static Factory instance; public static Factory Instance
{
get { return new Factory(); }
}
public IDAL.IAdminUsers GetAdminUsers()
{
//第一种实现方式
//IDAL.IAdminUsers adminusers = new OledbDAL.AdminUsers();
//switch (dal)
//{
// case "Oledb"://Oledb与Web.config中的key值对应找到value值但是value值不一定和OledbDAL.AdminUsers();中的OledbDAL一致。
// adminusers = new OledbDAL.AdminUsers();
// break;
// case "Sql":
// adminusers = new SqlDAL.AdminUsers();
// break;
//}
//return adminusers;
//第二种实现方式
//Oledb与Web.config中的key值对应找到value值但是value值必须和OledbDAL.AdminUsers();中的OledbDAL一致
object obj = Assembly.Load(dal).CreateInstance(dal + ".AdminUsers"); //通过程序集路径和类名创建对象实例(反射)
return (IDAL.IAdminUsers)obj;
} 6.BLL程序集: 业务逻辑层,用来针对功能方法,调用不同表的操作。在业务层我们需要调用实体,就需要Data来实现,有了实体类就需要操作类。而这个操作类则需要我们在先前提到的接口的声明中去实现。然后需要通过DALFactory去得到要操作类型的数据库。也可以说是通过DALFactory中的方法去得到实体类,而这个方法的返回类型为接口类型。下面是一个BLL层的
一个方法使用的例:
public static bool Login(string name,string pwd)
{
Data.AdminUsers au = new Data.AdminUsers();//声明实体类
au.Username = name;
au.Userpwd = pwd;
IDAL.IAdminUsers adu =DALFactory.Factory.Instance.GetAdminUsers();//相当于操作类
adu.GetData(au);
DataTable dt=adu.Login();
if (dt.Rows.Count > 0)
{
return true; }
else
{
return false;
}
}
他们每一层的引用关系可分为:
1.IDAL引用DATA
2.OledbDAL(SqlDAL) 引用 IDAL和Data(Model)
3.DALFactory 引用 IDAL,Data(Model),OledbDAL(SqlDAL)
4.BLL 引用 DALFactory,IDAL,Data(Model)
5.网站项目: 引用 BLL
最后我们需要注意一点的是类的继承可以通过:去实现也可以通过属性的封装去实现。当一个类同时继承类和接口时应该先写类再加上,写接口
相关阅读 更多 +