兩個多星期的探索終於算是把登入敲通了,當「登入成功!」顯示在我眼前的那一刻,我想那種快樂的感覺就好像我中了三百萬大獎一樣的激動吧! 三層當時不是很明白,所以三層到七層走了不少彎路。出來混早晚是要還的,這話說的一點都沒錯。廢話不多說了,直接上料。
這裡的七層是在三層的基礎上與設計模式相結合演化而來的,應用了設計模式中的外觀模式和抽象工廠模式。
一、實體層(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無效 出現這個原因大家都會去資料庫檢視相關命名的問題吧,是的,我也去做了,也檢視了七層的各...