在web開(kāi)發(fā)中常常用到工廠(chǎng)模式三層架構,現在也在Winform中應用這種架構方式,嘗試了很多,也模仿了經(jīng)典例子PetShop,但是還是不行,也參考了網(wǎng)上的一些例子?,F在把我這個(gè)例子的整個(gè)制作過(guò)程簡(jiǎn)單的介紹一下。(由于本例子是介紹三層結構,所以只是簡(jiǎn)單的應用,如果你覺(jué)得這種方式好,請自己實(shí)現其他模塊)
結構:
-------PMIS--------主程序代碼
表示層,負責應用程序的表現形式、用戶(hù)體驗等。
-------DALFactory-----抽象工廠(chǎng)
抽象工廠(chǎng),用于創(chuàng )建各種數據對象的方法,這里有配置文件和反射的運用。
-------IDAL--------數據接口層(控制是選擇什么類(lèi)型的數據庫)
數據操作接口,數據訪(fǎng)問(wèn)層實(shí)現其接口并重寫(xiě)它(體現了面向接口的編程思想)。
-------BLL------
處理應用程序的業(yè)務(wù)邏輯,被表示層調用。
-------Model-------構造模型(對應數據庫字段)
Model程序集,存放實(shí)體類(lèi),用于數據訪(fǎng)問(wèn)層和邏輯層調用
-------SQLServerDAL----SQLServer數據訪(fǎng)問(wèn)層
數據訪(fǎng)問(wèn)層,實(shí)現具體的select、update、delete....操作,重寫(xiě)IDAL接口。
-------DBUtility----公共數據訪(fǎng)問(wèn)層
數據處理層,實(shí)現具體的ExecuteReader,ExecuteDataTable,ExecuteNonQuery等。
-------Utility----公共層
實(shí)現從配置文件中讀取數據庫聯(lián)接字符串。
1、數據庫結構
數據庫名PMIS
表Admin
[ID] [bigint] 編號
[Name] [varchar](10) 名稱(chēng)
[PassWord] [varchar](100) 密碼
略......
建表語(yǔ)句
CREATE TABLE [dbo].[Admin](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PassWord] [varchar](100) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PurviewID] [int] NOT NULL,
[Remember] [int] NULL,
[AutoRun] [int] NULL,
[DepartmentsID] [bigint] NULL,
CONSTRAINT [PK_管理員_1] PRIMARY KEY CLUSTERED
(
[ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
2、接著(zhù)建立數據庫模型
Model
#region 內部成員字段
private int _id;
private string _Name;
private string _Password;
略...
#endregion
#region 方法
public AdminInfo() { }
public AdminInfo(string userName, string password)
{
this._Name = userName;
this._Password = password;
}
#endregion
3、建立DALFactory-----抽象工廠(chǎng)
public static IDAL.IAdmin Create()
{
string path=System.Configuration.ConfigurationSettings.AppSettings["DAL"];
string className="SQLServerDAL.Admin";
IDAL.IAdmin acount=(IDAL.IAdmin)Assembly.Load(path).CreateInstance(className);
return acount;
}
4、建立IDAL--------數據接口層
public interface IAdmin
{
AdminInfo Login(string userName, string password);
int Insert(AdminInfo account);
int Update(AdminInfo account);
}
5、建立Utility----公共層
public static string ConnectionString()
{
return (ConfigurationSettings.AppSettings["ConnectionString"]);
}
6、建立DBUtility----公共數據訪(fǎng)問(wèn)層和SQLServer數據訪(fǎng)問(wèn)層
DBUtility中建立SQLHelper類(lèi)
SQLServerDAL的Admin類(lèi)需要繼承IAdmin
public class Admin:IAdmin
{}
Admin類(lèi)主要實(shí)現用戶(hù)登陸功能
7、建立業(yè)務(wù)邏輯曾B(niǎo)LL
方法public static AdminInfo Login(string userName, string password){}
8、為PMIS主程序添加應用程序配置文件app.config
添加<appSettings>
<add key="ConnectionString" value="server=.;uid=sa;pwd=;database=PMIS"></add>
<add key="DAL" value="SQLServerDAL"></add>
</appSettings>
在主程序的窗體中添加控件,為按鈕添加事件
if (BLL.Admin.Login(參數) == null)
{
//處理...
}
else
{
//處理...
}