星期一
情景早晨,專案組長來到身邊,「有人反映咱們的專案有bug」 「什麼bug?」 「不知道,你新增乙個日誌模組自己看記錄去。」 」...「
分析在mvc全域性過濾器中自己新增有異常過濾器。
global.asax
view code
filterconfig.cs
view code
開工建立過濾器,myexceptionfilter類
1 //因為微軟已經提供了乙個handleerrorattribute類(它其實也是繼承了iexceptionfilter),所以我們只需繼承它即可
2 public class myexceptionfilter: handleerrorattribute
3 17 }
loghelper類,用來把錯誤寫到日誌裡面去
view code
把自己的過濾器註冊到全域性
view code
自定義錯誤測試
ok,大功告成,以後就可以根據日誌來找錯誤了。
星期二情景
早晨,專案組長又來到小身邊,」昨天我用了你的錯誤日誌功能,還不錯,但是你將日誌寫在檔案中整理不是太方便,還存在共享衝突問題,你改下寫到資料庫中「 」...「
分析檢視昨天寫的**
發現此處是乙個變化點,有可能寫到檔案中,有可能寫到資料庫中,有可能......
不就是寫到不同的地方麼,簡單,多型就能搞定了。
開工依賴於抽象,而不依賴於具體
建立iwritelog介面
view code
建立writelogtotext類實現介面,用來寫入文字
view code
建立writelogtosqlserver類實現介面,用來寫入資料庫
view code
對變化點進行修改
1 threadpool.queueuserworkitem(o=>
11 });
ok,大功告成,又可以去美滋滋了...
星期三情景
早晨,專案組長再一次來到小身邊,」經過我的思考,我覺得把錯誤資訊同時寫到文字和資料庫中比較好「 」為什麼?「 「需求」 「...」
分析
錯誤資訊有可能要寫到不同的地方,而且不知道有多少地方,說不定明天又加了乙個redis、後天再加乙個....
這時候我們可以考慮建立乙個集合來儲存都需要寫到那些地方去。(這裡插一句:設計模式只是一種思想,實現方式肯定是不唯一的,但是思想是精髓,不能說這個**是這個模式,換一種方式實現就不是這個模式了。)
然後依次寫入即可。
開工對loghelper進行修改鄭州不孕不育醫院:鄭州不孕不育醫院哪家好:鄭州不孕不育醫院排行:
1 public class loghelper
2 27 }
28 });
29 }
32 //給外部提供方法,將錯誤資訊寫入佇列
33 public static void write(string exceptionstring)
39 }
40 }
後期如果還需要寫入其它地方或者去掉乙個的話,只需要add乙個或者刪除一行即可。當然,現在的**還有很多可優化的地方,比如把通知者(loghelper)進行抽象,還可以通過配置檔案加反射再次解耦。這裡就不做過多介紹了。因為已經星期四了...
星期四採用log4net
總結觀察者模式又叫發布-訂閱模式,定義了一種一對多的依賴關係,讓多個觀察者同時監聽同乙個物件。當物件狀態發生改變時,通知所訂閱的觀察者。
什麼時候使用?
當乙個物件改變同時需要改變其他物件,並且還不知道要改變多少物件。這時應該考慮觀察者模式。
c 之觀察者模式
以下均摘自 大話設計模式 這本書,供大家一起學習和交流,感謝作者。觀察者模式又叫做發布 訂閱模式 其定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。觀察者模式結構圖 subject類,可翻譯為主題或者抽象統...
HEAD FIRST 之觀察者模式
定義了物件之間的一對多依賴,當乙個物件改變狀態時,它的所有依賴者都將會收到通知並自動更新.觀察者模式形容圖 有乙個氣象觀察站,我們希望建立乙個應用,有三種佈告板 用於顯示不同的氣象資料 當氣象站獲取到最新的測量資料時,我們希望三種佈告板能實時更新.類圖設計 其中weatherdata用於獲取氣象站最...
C 之 觀察者模式
觀察者模式用途非常多,比如阿里雲的很多服務都是以觀察者模式提供的。觀察者模式 subject 主題 observer觀察者 又叫發布的訂閱模式 publish 發布 subscribe訂閱 解決的問題是一對多的一種關係,核心就是每當乙個物件改變狀態,則所有依賴於他的物件都得得到通知並自動更新。結合實...