【机房重构】-七层
开发顺序
1.创建Entity,实现业务实体。
2.创建IDAL,实现接口。
3.创建DAL,实现接口里的方法。
4.增加APP.config里的配置信息,为提供DAL的程序集。
5.创建Factory,返回程序集的指定类的实例。
6.创建BLL,调用Factory,得到程序集指定类的实例,完成数据操作方法。
7.建Facade,调用BLL,得到BLL层的处理结果返回值。
8.创建UI,调用Facade里的数据操作方法,实现登录。
各层调用关系
Entity实体层
namespace Entity
{
public class UserInfo
{
//定义 用户ID 字段
private int userid;
public int UserID
{
get { return userid; }
set { userid = value; }
}
//定义 用户名 字段
private string userName;
public string UserName
{
get { return userName; }
set { userName = value; }
}
//定义 密码 字段
private string password;
public string PassWord
{
get { return password; }
set { password = value; }
}
//定义 级别 字段
private string level;
public string Level
{
get { return level; }
set { level = value; }
}
//定义 状态 字段
private bool state;
public bool State
{
get { return state; }
set { state = value; }
}
}
}
IDAL接口层
namespace IDAL
{
public interface LoginIDAL
{
DataTable selectUser(Entity.UserInfo UserInfo);
}
}
DAL层
namespace DAL
{
public class LoginDAL:IDAL.LoginIDAL
{
public DataTable selectUser(Entity.UserInfo UserInfo)
{
SQLHelper sqlHelper = new SQLHelper();
SqlParameter[] sqlParams = {new SqlParameter("@userID", UserInfo.UserID),
new SqlParameter("@PassWord", UserInfo.PassWord) };
string sql = @"SELECT * FROM [User_Info] WHERE [email protected] and [email protected]";
DataTable table = sqlHelper.ExecuteQuery(sql, sqlParams, CommandType.Text);
return table;
}
}
}
namespace DAL
{
public class SQLHelper
{
private SqlConnection conn = null;
private SqlCommand cmd = null;
private SqlDataReader sdr = null;
public SQLHelper()
{
string connStr = System.Configuration.ConfigurationManager.AppSettings["connStr"];
conn = new SqlConnection(connStr);
}
private SqlConnection GetConn()
{
if (conn.State == ConnectionState.Closed )
{
conn.Open();
}
return conn;
}
///<summary>
///执行不带参数的增删改SQL语句或者存储过程
///</summary>
///<param name="cmdTect">增删改查SQL</param>
///<return>返回受影响的行数</return>>
public int ExecuteNonQuery(string cmdText, CommandType ct)
{
int res;
try
{
cmd = new SqlCommand(cmdText, GetConn());
cmd.CommandType = ct;
res = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
return res;
}
/// <summary>
/// 执行带参数的的增删改SQL语句或者存储过
/// </summary>
/// <param name="cmdText">增删改查SQL</param>
/// <param name="paras">要查询的参数</param>
/// <param name="ct">命令类型</param>
/// <returns>返回受影响的行数</returns>
public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct)
{
int res;
using (cmd = new SqlCommand(cmdText, GetConn()))
{
cmd.CommandType = ct;
cmd.Parameters.AddRange(paras);
res = cmd.ExecuteNonQuery();
}
return res;
}
/// <summary>
/// 执行带参数的查询SQL语句或存储过程
/// </summary>
/// <param name="cmdText">查询SQL语句或存储过程</param>
/// <param name="ct">命令类型</param>
/// <returns></returns>
public DataTable ExecuteQuery(string cmdText, CommandType ct)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(cmdText,GetConn());
cmd.CommandType = ct;
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
}
/// <summary>
/// 执行带参数的查询SQL语句或存储过程
/// </summary>
/// <param name="cmdText">查询SQL语句或存储过程</param>
/// <param name="paras">参数集合</param>
/// <param name="ct">命令类型</param>
/// <returns></returns>
public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(cmdText, GetConn());
cmd.CommandType = ct;
cmd.Parameters.AddRange(paras);
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
}
}
}
BLL层
namespace BLL
{
public class LoginBLL
{
public bool UserBLL(Entity.UserInfo UserInfo)
{
Factory.LoginFactory fact = new Factory.LoginFactory();
IDAL.LoginIDAL idal = fact.CreateUser();
DataTable table = idal.selectUser(UserInfo);
bool flag;
if (table.Rows.Count == 0)
{
flag = false;
}
else
{
flag = true;
}
return flag;
}
}
}
Factory
namespace Factory
{
public class LoginFactory
{
string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];
public IDAL.LoginIDAL CreateUser()
{
string ClassName = StrDB + "." + "LoginDAL";//DAL层的类名
return (IDAL.LoginIDAL)Assembly.Load(StrDB).CreateInstance(ClassName); //反射加
//工厂的应用
}
}
}
BLL
namespace BLL
{
public class LoginBLL
{
public bool UserBLL(Entity.UserInfo UserInfo)
{
Factory.LoginFactory fact = new Factory.LoginFactory();
IDAL.LoginIDAL idal = fact.CreateUser();
DataTable table = idal.selectUser(UserInfo);
bool flag;
if (table.Rows.Count == 0)
{
flag = false;
}
else
{
flag = true;
}
return flag;
}
}
}
Facade
namespace Facade
{
public class LoginFacade
{
public bool selectUser(Entity.UserInfo userInfo)
{
bool Flag;
BLL.LoginBLL userBLL = new BLL.LoginBLL();
Flag = userBLL.UserBLL(userInfo);
return Flag;
}
}
}
UI
namespace UI
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}