現有表結構如下:
人員表:
工號 姓名 性別 職位代碼 部門代碼 ……
部門表:
部門代碼 部門名稱……外鍵關聯
職位表:
職位代碼 職位名稱……外鍵關聯
類設計:
第一種:
private string 工號
private string 姓名
private string 性別
private string 職位代碼
private string 部門代碼
第二種:
private string 工號
private string 姓名
private string 性別
private string 職位代碼
private string 職位名稱
private string 部門代碼
private string 部門名稱
現在主體是人員,對人的操作主要有與DATAVIEW的綁定顯示,人的新增、更新、刪除等操作,
請問人員類要怎麼設計才能滿足以上幾個操作的要求?
第一種方法便於對人員的新增、更新及刪除,
第二種方法便於對顯示的操作,不需再作處理,顯示到界面中就是直接是中文名稱而不是代碼啦。
雖然顯示可以用如下SQL語句直接得到
select 人員表.*,部門表.部門名稱,職位表.職位名稱 from 人員表,部門表,職位表 where 人員表.部門代碼=部門表.部門代碼 and 人員表.職位代碼=職位表.職位代碼
但是還是想有一個方法類來實現,代碼如下
public interface IBaseProcessor //IDAL ()
{
void Delete(baseClass baseInfo);
void Update(baseClass baseInfo);
void Append(baseClass baseInfo);
}
public baseClass //數據庫MODEL
{
private string 工號
private string 姓名
private string 性別
private string 職位代碼
private string 部門代碼
...
}
public baseProcessor:IBaseProcessor //BLL (實現增刪改)
{
//自己實現去
}
public newClass:baseClass //數據庫MODEL派生 存放關聯表字段信息(對於1對1 1對多 多對多)
{
private string 職位名稱
private string 部門名稱
...
}
public interface INewProcessor //IDAL 顯示類接口
{
NewClassCollection Load();
//或者
DataTable Load();
}
public newProcessor:baseProcessor,INewProcessor // 顯示類實現 BLL
{
//自己實現INewProcessor
}
這樣加載顯示的部分只要關心INewProcessor接口,並實現它即可
保存的過程中只要關心IBaseProcessor在baseProcessor中實現接口的方法去處理
由於newClass是baseClass繼承下來,所以操作顯示都沒衝突。
只需創建newClass和newProcessor。