C 機房重構 七層登入

2021-08-02 00:18:45 字數 3537 閱讀 1103

兩個多星期的探索終於算是把登入敲通了,當「登入成功!」顯示在我眼前的那一刻,我想那種快樂的感覺就好像我中了三百萬大獎一樣的激動吧! 三層當時不是很明白,所以三層到七層走了不少彎路。出來混早晚是要還的,這話說的一點都沒錯。廢話不多說了,直接上料。

這裡的七層是在三層的基礎上與設計模式相結合演化而來的,應用了設計模式中的外觀模式和抽象工廠模式。

一、實體層(entity):實體層,存放全域性的實體類,方便各個層之前的引數呼叫。

二、資料訪問層(dal):該層所做事務直接運算元據庫,針對資料的增添、刪除、修改、查詢。無需做什麼邏輯判斷,只是和資料庫直接互動。

三、介面層(idal):介面層用來定義乙個統一的介面,解除b層和d層的耦合。

四、工廠層(factory):工廠來建立介面,返回介面,用到了抽象工廠+反射+配置檔案,作用是靈活的實現資料庫的連線,方便換資料庫,進一步解耦合。

五、業務邏輯層(bll):主要負責一些邏輯判斷和處理。

六、外觀層(facade):這裡用到了外觀模式,使得複雜問題簡單化,用外觀模式定義系統中每一層的入口,層與層之間不直接產生聯絡,而通過外觀類建立聯絡,降低層之間的耦合度。

七:介面層(ui):主要職責是為使用者提供資訊,以及把使用者的指令進行翻譯。

先來看看包圖,一開始沒有太能搞懂包圖是用來幹嘛的,知道後來用到引用時發現了它的妙處,這一層跟哪一層有關聯啊,各個層之間有什麼關係啊,通過包圖一目了然。

}//定義 使用者名稱 字段

private string username;

public string username

set

}//定 密碼 字段

private string password;

public string password

set

}//定義 等級 字段

private string level;

public string level

set

}//定義 狀態 字段

private bool stat;

public bool state

set }}

using system.data;

public inte***ce loginidal

using system.configuration;

using system.data;

using system.data.sqlclient;

namespace dal

; string sql = @"select * from [user_info] where userid=@userid and pwd =@password";

datatable table = sqlhelper.executenonquery(sql,sqlparams,commandtype.text);

return table;

} }

}

sqlhelper類

using system.data;

using system.data.sqlclient;

using system.configuration;

namespace dal

private sqlconnection getconn()

return conn;

}/// /// 執行不帶引數的的增刪改sql語句或者儲存過程

///

/// 增刪改查sql

/// 命令型別

/// 返回受影響的行數

public int executenonquery(string cmdtext,commandtype ct)

catch (exception ex)

finally

}return res;

}/// /// 執行帶引數的的增刪改sql語句或者儲存過

///

/// 增刪改查sql

/// 要查詢的引數

/// 命令型別

/// 返回受影響的行數

public int executenonquery(string cmdtext, sqlparameter paras, commandtype ct)

return res;

}/// /// 執行不帶引數的查詢sql語句或儲存過程

///

/// 查詢sql語句或儲存過程

/// 命令型別

///

public datatable executequery(string cmdtext, commandtype ct)

return dt;

}/// /// 執行帶引數的查詢sql語句或儲存過程

///

/// 查詢sql語句或儲存過程

/// 引數集合

/// 命令型別

///

public datatable executequery(string cmdtext, sqlparameter paras, commandtype ct)

return dt;}}

}

配置檔案:

public class loginfactory

}

public class loginbll

else

return flag;}}

public class loginfacade

}

namespace ui

private void lbllogin_click(object sender, eventargs e)

if (txtpwd.text == "")

tryelse

}catch (exception)

}private void lblcancel_click(object sender, eventargs e)}}

最後又由**生成的圖如下,和包圖大致相同;

這次重構採用了分層思想,使得耦合度大大降低,實現了**良好的擴充套件性,且便於維護和修改**.儘管這個過程很是磨人,但最終還是走出來了,萬事開頭難,加油!

機房重構 七層登入

在前面介紹了三層,ui層 bll層 dal層 這次總結下 七層 在還沒有學習七層的時候,那時候只是認為 七層 只是比三層多了四層而已,其實不然,七層它也是機房重構的登入部分。其實在學習 機房重構的時候 包括在寫任何程式的時候,沒有任何要求說必須使用七層架構,所以說,這就有了我們為什麼要用 七層架構 ...

重構 七層登入

七層是指哪七層?與三層相比多了哪幾層呢?各層之間的關係又是怎樣的呢?七層就是在三層的基礎上,新增了外觀層 也就是設計模式的外觀模式 抽象工廠加反射,介面層。外觀層主要是在ui層和bll層之間實現解耦 抽象工廠加反射主要是為了方便更換資料庫,同時把dal層中的類轉換成idal層中的介面,從而使bll層...

機房重構 七層 錯誤集錦

無法開啟登入所請求的資料庫 entity 登入失敗。使用者 sa 登入失敗。看這個部落格可以解決 出現這個問題的原因是資料庫配置的問題,需要開啟配置管理器,讓沒有啟動的專案都啟動,尤其是tcp ip。列名pwd無效 出現這個原因大家都會去資料庫檢視相關命名的問題吧,是的,我也去做了,也檢視了七層的各...