日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用Helper对类的行为进行修饰以便复用(附:外三篇)

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Helper对类的行为进行修饰以便复用(附:外三篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是?代碼“中間地帶”的封裝與復用?的后續。

?

咱不談設計模式這種“高檔”貨,也不談M××,只談怎么消除Copy+Paste,消除拖窗體設置屬性這類耗時、易錯的動作。

前些天和我徒弟聊天,他沾沾自喜的說他一天要寫500行css,俺打擊他說,啥時候他一天寫到100行時才算悟了。

?

寫代碼就是一個由多到少的過程:

(1)見山是山時,一天能寫1000行,大量的Copy+Paste,這叫代碼迷宮

(2)見山不是山時,一天能寫500行,Copy+Paste變成了大量的設計模式,這叫類的迷宮,Java程序尤其擅長這個,搞得我現在不敢看Java程序了。開個玩笑,重構到模式,實際上是從一種垃圾(代碼迷宮)重構到另一種垃圾(類的迷宮)

(3)見山還是山時,一天能寫100行,回歸本源

?

先描述一個很常見的 Copy+Paste 場景:為客戶端程序添加NotifyIcon,當關閉窗體時,窗體消失,縮小到托盤,雙擊托盤圖標,則窗體又重現。

對于這一需求,msdn 的樣例如下:

Code

?

于是,我們開發Client程序時,當需要這一功能,就把這樣的代碼復制過來,改吧改吧就完成了。

復制粘貼很惡心,一次兩次還好,次數多了自己就煩了。并且這樣一來,導致代碼量膨脹——功能一多,一個Form的代碼量就近千行,很不方便測試和維護。因此,有必要進行抽象和復用。

這種抽象,屬于對類的局部行為進行修飾(設計模式放在括號里談,不想看的可以忽略——它不同于Mediator,也不同于Wrapper,一時也想不出好的名字),就叫Helper了。單純的Helper又體現不出具體的意圖,俺就命名為FormConfig。下面是 FormConfig 的代碼:

Code

?

使用起來很簡單:

Code

?

其實這個還可以簡化,因為畢竟還要聲明一個FormConfig,再new一個,再Attach一下子,3行代碼。進一步偷懶的話可以設計一個擴展方法,然后把FormConfig實例放在一個公共對象中進行管理,當Form退出時,再在公共對象中置空FormConfig。就不寫代碼了,簡化到目前這個地步,俺已經滿足了。

?

== 附外3篇 ==

?

下面這兩篇和上面的這篇都是昨天晚上寫的。第一篇是對這一段時間代碼整理的總結,有點私人化。第二篇是講通用驗證碼識別的一個思路,不是完整的文章,同時……又涉及點技術秘密,沒辦法完全透露。再附一篇完全搞笑的。

?

附1:代碼整理的總結

?

搞了四個月的工作室,失敗了,散了,好在成本嚴格控制住了,也沒虧多少,最大的收獲就是得到了證實——此路不通。

還是堅持當IT宅男,堅持向產品和高端轉型,增強競爭優勢。我希望投資回報是一條上升的線,而不是一條下降的線。

?

于是最近做的事情主要是整理代碼和復習和學習數學。今后將玩數學了,主要做數學密集的應用。(看現在經濟形勢,10年內會新出現7000萬白領,會減少7000萬藍領,藍領的平均工資將于白領持平。國內又提供不了這么多白領崗位,IT界的競爭將無比的殘酷。作為沒有組織做后盾的IT宅男,俺必須早點布局。好在現在大部分大學生大學都是白混的,是數學白癡,和以前的俺一樣)。

?

一、應用結構

?

1、??采用C-S結構,關鍵部分的計算放在S端,方便升級、收費。今后將引入P2P

2、??自己用的話,用WPF開發界面,客戶用的,用Winform開發。核心代碼盡量與UI無關。

3、??將不再承接Web開發為主的項目,不承接數據庫開發為主的項目

?

二、項目結構

?

1、微觀結構

?

bin

lib

release

src

?

2、宏觀結構

?

?

1Orc基礎庫主要封裝一些常用的類、擴展方法、Mediator,以及一些基礎設施,順帶儲存自己用的snippets

?

?

嘿嘿,俺自定義的snippet只有一個:

?

Code

?

2OrcSmart庫計劃包括

aOrc.SmartImage,對常用的圖像處理、分析、識別算法進行封裝,基于AForge.NetOpenCV進行開發,并新添一些這兩個庫尚未實現的算法。目前基本成型。

bOrc.SmartText,對常用的文本分析,NLP算法進行封裝,這個庫現在還是一個空架子,還未行動。

Orc.SmartCore被我歸入Orc基礎庫里面,這個主要實現常用統計計算和機器學習算法。

?

3Orc協議庫對常用協議進行實現與封裝,目前實現了QQ2005-2007的協議,YMsg協議,封裝了MSNP協議。今后將主要針對基于httpWeb應用進行封裝。

?

4OrcEntity庫,封裝常用實體類。

?

5Forsaken庫主要針對3D應用,基于XNA,目前還是空架子,還未行動(一沒時間,二外部環境還不成熟)。嘿嘿,主要目標是3D仿真。

?

三、第三方庫選擇:

(1)???????使用nunit?進行單元測試(nunitvs自帶的單元測試好用很多)

(2)???????使用log4net?記錄日志

(3)???????使用protobuf?進行序列化

(4)???????圖像處理庫:AForge.NetOpenCVEmgu CV

(5)???????數學庫:MathNet.Iridium

?

附2:通用驗證碼識別的一個思路

?

要實現通用的驗證碼程序,我認為應該具備以下2點:

(1)???????不需要切割

(2)???????不需要分離背景和前景

?

下面是我的思路:

(1)???????邊緣檢測獲得邊緣

(2)???????計算樣本的ShapeContext,因為要考慮到干擾線,ShapeContext沒法歸一化

(3)???????計算測試圖片的ShapeContext(也可以是其它的描述子,但我感覺對于驗證碼來說,ShapeContext更好用一些,抗干擾能力更強一些。也可以計算不同Scale下的ShapeContext,來解決樣本和測試圖片中字符大小不一致的問題)

(4)???????將測試圖片的ShapeContext存入多維索引中,便于查詢

(5)???????對于樣本,設定一個匹配的閾值,為每個點尋找測試圖片中的匹配點(每個尋找2-3個匹配點),這樣,所有的匹配點會在2D空間內呈現一種分布,這種分布會有0個或數個聚集區,每一個聚集區就是一個候選區,通過聚類算法尋找聚集區

(6)???????假定圖片中有一個字符W,這個字符既可以匹配W,又可以匹配V,甚至能匹配IL這兩個字符,因此應該設計一個篩選算法

?

附3:江湖

?

本文轉自xiaotie博客園博客,原文鏈接http://www.cnblogs.com/xiaotie/archive/2009/11/12/1601456.html如需轉載請自行聯系原作者

?

xiaotie?集異璧實驗室(GEBLAB)

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的用Helper对类的行为进行修饰以便复用(附:外三篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。