七層是指哪七層?與三層相比多了哪幾層呢?各層之間的關係又是怎樣的呢?七層就是在三層的基礎上,新增了外觀層(也就是設計模式的外觀模式),抽象工廠加反射,介面層。外觀層主要是在ui層和bll層之間實現解耦;抽象工廠加反射主要是為了方便更換資料庫,同時把dal層中的類轉換成idal層中的介面,從而使bll層實現通過呼叫idal從而呼叫dal層;介面層主要是為了在bll層和dal層之間實現解耦。
1、介面層(ui):主要用於收集使用者輸入的資料然後傳給外觀層,再由外觀層傳給b層進行相應的判斷。
2、業務邏輯層(bll):主要是進行邏輯判斷的,呼叫工廠中的方法建立相應的介面。
3、資料訪問層(dal):實現介面層定義的介面。
4、外觀層(facade):運用外觀層的目的是降低u層和b層之間的耦合,u層和b層之間的聯絡只需要通過facade層的介面就行了,u層無需知道b層內部有哪些方法。外觀層接收u層傳來的資料,然後呼叫b層的方法對資訊進行驗證。
5、工廠層(factory):通過配置檔案和抽象工廠我們可以實現不更改**,換一下配置檔案中的value值就可以更換資料庫了。factory還需要完成的工作就是定義乙個介面呼叫介面層,實現bll層和dal層之間的資料傳遞。
6、介面層(idal):介面層是用於定義乙個統一的介面,解除b層和d層的耦合。
7、實體層(entity):和三層中的實體層一樣,主要是用來在各層中傳遞資料。
除此之外,還有sqlhelper,它將d層中需要重複使用的連線資料庫**抽象到乙個層裡面了,這樣就不用重複的寫這些**。
了,減少了冗餘。
配置檔案
<?xml version="1.0" encoding="utf-8" ?>
sqlhelper
public class sqlhelper
private sqlconnection getconn()
return conn;
}/// /// 執行不帶引數的資料庫操作或者儲存過程
///
///
///
/// 返回受影響的行數
public int executenonquery(string cmdtext,commandtype ct)
return res;
}/// /// 執行帶引數的資料庫操作或者儲存過程
///
///
///
///
/// 返回受影響的行數
public int executenonquery(string cmdtext,sqlparameterparas,commandtype ct)
return res;
}/// /// 執行不帶引數的sql查詢語句或者儲存過程
///
///
///
/// 返回受影響的行數
public datatable executequery(string cmdtext,commandtype ct)
return dt;
}/// /// 執行帶引數的sql查詢語句或儲存過程
///
///
///
///
/// 返回受影響的行數
public datatable executequery(string cmdtext,sqlparameterparas,commandtype ct)
return dt;
}
}
entity層
public class userinfo
//定義使用者名稱username的屬性
public string username
//定義密碼password屬性
public string password
//定義使用者級別userlevel的屬性
public string userlevel
}
dal層
public class logindal:idal.loginidal
;string sql = @"select * from users where userid=@userid and password=@password";//構造語句,匹配資料庫表
datatable table = sqlhelper.executequery(sql, sqlparams, commandtype.text);
return table;}}
idal層
public inte***ce loginidal
factory層
//工廠層
public class loginfactory
}
bll層
//業務邏輯層
public class loginbll
else
return flag; //返回數值,賬號存在}}
facade層
public class loginfacade
}
ui層
public partial class frmlogin : form
private void btnlogin_click(object sender, eventargs e)
if (txtpassword.text=="")
//例項化乙個外觀
facade.loginfacade facade = new loginfacade();
//例項化乙個使用者
entity.userinfo user = new entity.userinfo();
//接受資訊
user.userid = txtuserid.text;
userid = user.userid;
user.password = txtpassword.text;
password = txtpassword.text;
boolean flag = false;
//例項化外觀
facade.loginfacade flogin = new loginfacade();
//呼叫外觀方法,返回給user
flag = flogin.selectuser(user);
//判斷是否登入成功false
if (flag!=false)
else}}
很早之前就該發出的部落格,直到今天才發,最近事情太多,需要好好規劃了!
感謝閱讀~
機房重構 七層登入
在前面介紹了三層,ui層 bll層 dal層 這次總結下 七層 在還沒有學習七層的時候,那時候只是認為 七層 只是比三層多了四層而已,其實不然,七層它也是機房重構的登入部分。其實在學習 機房重構的時候 包括在寫任何程式的時候,沒有任何要求說必須使用七層架構,所以說,這就有了我們為什麼要用 七層架構 ...
C 機房重構 七層登入
兩個多星期的探索終於算是把登入敲通了,當 登入成功!顯示在我眼前的那一刻,我想那種快樂的感覺就好像我中了三百萬大獎一樣的激動吧!三層當時不是很明白,所以三層到七層走了不少彎路。出來混早晚是要還的,這話說的一點都沒錯。廢話不多說了,直接上料。這裡的七層是在三層的基礎上與設計模式相結合演化而來的,應用了...
七層登入 C
三層登入完成之後,緊接著就是七層登入,七層相對三層多的是設計模式 介面,目的無非就是希望解耦合,符合開閉原則,系統更加優化。剛開始的時候七層很是不理解,不知道層層之間的聯絡,花了好幾天的時間才實現,現在不能說非常明白,但是懂的多了,我想說 只要去做,時間花在 都是值得的!ui層private voi...