重構 七層登入

2021-10-01 19:27:46 字數 3468 閱讀 6173

七層是指哪七層?與三層相比多了哪幾層呢?各層之間的關係又是怎樣的呢?七層就是在三層的基礎上,新增了外觀層(也就是設計模式的外觀模式),抽象工廠加反射,介面層。外觀層主要是在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...