機房重構 上下機(職責鏈模式和策略模式)

2021-09-09 01:59:58 字數 3434 閱讀 5465

機房重構中上機功能相對好實現一些,下機用到了職責鏈模式和策略模式,職責鏈模式算時間,策略模式算消費金額

部分**

dal層

public class offdal:ioffidal

;string sql = "select*from card where cardno=@cardno";

datatable table = sqlhelper.executequery(sql, sqlparas, commandtype.text);

return table;

}//查詢student表

public datatable selectstudent_info(student_info student)

;string sql = "select * from student_info where cardno=@cardno"; //sql語句查詢

datatable dt = sqlhelper.executequery(sql, sqlparas, commandtype.text);//函式executerquery查詢

return dt;//返回值

}//查linelog表

public datatable selectlinelog(linelog line)

;string sql = "select * from linelog where cardno=@cardno"; //sql語句查詢

datatable dt = sqlhelper.executequery(sql, sqlparas, commandtype.text);//函式executerquery查詢

return dt;//返回值

}//查linelog表,填充下機日期

public datatable selectlinelog1(linelog line)//下機

;string sql = "select * from linelog where cardno=@cardno and offdate is null"; //sql語句查詢

datatable dt = sqlhelper.executequery(sql, sqlparas, commandtype.text);//函式executerquery查詢

return dt;//返回值

}public datatable updatelinelog1(linelog line)

;string sql = "update linelog set cardno=@cardno, offdate=@offdate,offtime=@offtime,mins=@mins,cash=@cash where cardno=@cardno"; //sql語句查詢

datatable dt = sqlhelper.executequery(sql, sqlparas, commandtype.text);//函式executerquery查詢

return dt;//返回值

}//下機,修改card表

public datatable updatecard(card card)

;string sql = "update card set balance=balance-@cash where cardno = @cardno"; //sql語句查詢

datatable dt = sqlhelper.executequery(sql, sqlparas, commandtype.text);//函式executerquery查詢

return dt;//返回值

}}

設計模式

namespace design_pattern

public linelog contextinte***ce(linelog line, basicdata basic)

}public abstract class strategy

public class strategyone : strategy

}public class strategytwo : strategy

}}

bll層

namespace bll

#endregion

return dt1;

}public datatable selectcard(card card)

//查學生表

public bool selectstudent_info(student_info student)

else

return flag;//返回flag

}//查上機表

public bool selectlinelog(linelog line)

else

return flag1;//返回flag1

}/// /// 下機

///

//////

//下機獲取下機日期

public boolean getoffdate(linelog line)

else

return flag2;

}//更新機日期

public datatable updateoffdate(linelog line)

//更新時間和餘額

public datatable updatemins(linelog line)

}}

ui層

#region 上機

private void btnup_click(object sender, eventargs e)

if (flag1 == false)//linelog表裡沒有卡號

if (flag2 != false)//下機日期為空,不可以上機

if (convert.toint32(dt.rows[0][2]) <= 1)//餘額不足

else

}#endregion

#region 下機

private void b***own_click(object sender, eventargs e)

else

else

}///flag接收學生表是否有卡號

///flag1接收上機表是否有卡號

///flag3接收上機表下機日期是否為空

//定義布林變數

bool flag1;

flag1 = off.selectlinelog(line);

bool flag3 = off.getoffdate(line);//接收b層offdate的值

datatable dt = off.updateoffdate(line);

if (flag1 == false)//上機表沒有卡號

else

else

} }}

#endregion

機房重構 下機 職責鏈模式 策略模式(理論篇)

第一次機房收費系統的時候,我們側重於功能的實現,對於大範圍的使用if.else,沒有太明顯的感覺。可當我們學完設計模式之後,才發現原來多次使用if.else,會使程式產生很高的耦合性,不便修改。對於同樣的下機內容,我們除了要用到七層的知識,可能最大的收穫就是去學習如何把設計模式運用到實踐中去了。1 ...

C 機房重構 下機(職責鏈模式)

職責鏈模式 職責鏈 當客戶提交乙個請求時,請求是沿著鏈傳遞,直至有乙個concretehandler物件負責處理,接收者和傳送者都滅有對方的明確資訊,且鏈中的物件自己也並不知道鏈的結構,僅需保持乙個指向其後繼者的引用。具體實現 在機房重構中職責鏈主要用於確定學生的消費時間,以下為具體的實現 抽象類p...

C 機房重構 下機之職責鏈模式

前言 說到設計模式,又熟悉又陌生,為什麼這麼說呢?熟悉是因為學過設計模式,明白了當時學習的例子 陌生是因為放到重構不會用,參考了很多部落格,才知道如何用這個職責鏈模式。內容 bll層 沒有設計準備時間,上機滿一分鐘即收費。public class chainbll public decimal co...