
C#面向對象設計模式縱橫談:Decorator 裝飾模式
子類復子類,子類何其多 假如我們需要為游戲中開發一種坦克,除了各種不同的型號的坦克外,我們還希望在不同場合中為其增加以下一種或多種功能:比如紅外線夜視功能,比如水陸兩棲功能,比如衛星定位功能等等。 ...
|
子類復子類,子類何其多 假如我們需要為游戲中開發一種坦克,除了各種不同的型號的坦克外,我們還希望在不同場合中為其增加以下一種或多種功能:比如紅外線夜視功能,比如水陸兩棲功能,比如衛星定位功能等等。 ...
系統的復雜度 假設我們需要開發一個坦克模擬系統用于模擬坦克車在各種作戰環境中的行為,其中坦克系統由引擎、控制器、車輪、車身等各子系統構成。 如何使用這樣的系統 動機(Motivation) 上述A方...
面向對象的代價 面向對象很好地解決了系統抽象性的問題,同時在大多數情況下,也不會損及系統的性能。但是,在某些特殊的應用中,由于對象的數量太大,采用面向對象會給系統帶來難以承受的內存開銷。比如圖形應用...
直接與間接 人們對于復雜的軟件系統常常有一種處理手法,即增加一層間接層,從而對系統獲得一種更為靈活、滿足特定需求的解決方案。 假設A要訪問B三次。如果A和B是分布式中的兩個機器,那么A需要跨機器調...
無處不在的Template Method 如果你只想掌握一種設計模式,那么它就是 -----Template Method!
變與不變 變化——是軟件設計的永恒主題,如何管理變化帶來的復雜性?設計模...
耦合與變化 耦合是軟件不能抵御變化災難的根本性原因。不僅實體對象與實體對象之間存在耦合關系,實體對象與行為操作之間也存在耦合關系。 創建型設計模式解決的創建者和被創建對象的耦合問題; 結構...
動機(Motivation) 在軟件構建過程中,如果某一特定領域的問題比較復雜,類似的模式不斷重復出現,如果使用普通的編程方式來實現將面臨非常頻繁的變化。在這種情況下,將特定領域的問題表達為某種語法規則下的句子,...
依賴關系的轉化 動機(Motivation) 在軟件構建過程中,經常會出現多個對象互相關聯交互的情況,對象之間常常會維持一種復雜的引用關系,如果遇到一些需求的更改,這種直接的引用關系將面臨不斷地變化?! ≡谶@...
我一直在從事企業信息管理系統的開發,目前的產品擁有了數百個企業客戶,作為企業管理信息系統,最大的挑戰是如何滿足不同企業通用需求的同時快速滿足企業個性化需求,除了企業戰略、組織架構、流程體系等緊密相...
現在越來越多的人應用jQuery了,有些同學在享受爽快淋漓coding時就將性能問題忽略了, 比如我. jquery雖在諸多的js類庫中性能表現還算優秀, 但畢竟不是在用原生的javascript開發, 性能問題還是需要引起重視...
隨著互聯網應用的廣泛普及,海量數據的存儲和訪問成為了系統設計的瓶頸問題。對于一個大型的互聯網應用,每天百萬級甚至上億的PV無疑對數據庫造成了相當高的負載。對于系統的穩定性和擴展性造成了極大的問題。...
目前開源工作流引擎用的最多的是jbpm , 各種特性都不錯, 文檔也比較多, 下面只簡單列舉一下其他幾種工作流引擎的特性。 Apache ODEEnhydra SharkBonitaOpen Business EngineEclipse JWT 支持的流程建模標準...
當前,HTML5標準正迫近最后階段(或者如HTML委員會共同主席Same Ruby所稱的“第一次收官”),其中,細則有了很大的調整?! ∨R別贈言 走好,bb元素 除了知道它是一個可以將頁面保存為離線程序的按鈕,...
我們曾給Widget開發者提供過一些小教程,很多朋友都需要第一手的開發資料,我們聯系到一位正在開發Widget小工具的作者。作者從事Android開發將近兩周了,Android給我的總體感覺是組件功能較弱,不過相對來說也比較...
誠然Visual Studio是一個非常強大的開發環境,但是使用久了以后,覺得在細節方面還是有很多地方比不過Eclipse。比如: 1. 界面設計沒有充分考慮空間占用 Visual Studio的工具窗口占用了過多的空間。從下圖...
如何激勵程序員?關于這個問題,有個內在的矛盾。我想下面這兩幅漫畫就完美地表達出來了。 這是個普遍現象,我也在自己身上發現這個問題了。如果其他程序員告訴你,因為你的代碼比較爛,他們正在重寫。沒有什么比...
abut全稱為annotations-based unit testing,基于注釋的單元測試工具,也可以就地取此英文的原義(毗鄰)稱呼它。眾所周知,javascript實在不好做測試,即使我這個工具現在對事件響應這東西還是無可奈何的,這只能黑盒測...
在擔任公司高管的幾年間,我面試過數以百計的各個層面的員工,其中最讓我感到遺憾的一個現象就是很多人有著非常好的素質,甚至有的還是名校的畢業生,因為不懂得去規劃自己的職業,在工作多年后,依然拿著微薄的薪水,為...
現在越來越多瀏覽器已經實現支持 HTML5,其中 iPad 上的 Safari 瀏覽器對 HTML5 支持就非常完美,所以我們做的 iPad 導航就是完全用 HTML5 寫的?! E 無法渲染 HTML5 樣式 IE 的用戶完全不是我們的目標用...
前兩天在網上看到世界知名的電騾服務器Razorback 2被查封、4人被拘禁的消息,深感當前做eMule / BitTorrent等P2P文件交換軟件的不易。以分布式哈希表方式(DHT,Distributed Hash Table)來代替集中索引服務器可...
有一些年輕的程序員向我咨詢,將來的路應該怎么走?俗話說,條條大路通羅馬。不同的路都能走向成功。到底選哪條路,取決于自己的興趣??赡苡谐绦騿T會問:如果還沒找到自己的興趣怎么辦?我的建議是多嘗試,努力做,這是職...
對于熟悉.NET程序員來說,編寫iOS應用程序的最佳選擇自然是MonoTouch。在上一篇文章里,我們已經在Mac OS X上安裝了MonoTouch開發環境,并已經能夠在Mac OS X和Windows之間共享文件?,F在我們就可以來簡單體驗一...
前段時間在工作機上裝了Mac OS X,這主要是因為我最近需要開發iPhone應用程序。雖然Xcode,Objective C一定是開發iOS應用程序的主流,但是經過一番考慮,我還是決定嘗試一下使用MonoTouch進行開發?! onoTou...
在近日舉辦的Modern .NET DDD Conference會議上,Chris Hardy在他的演講中展示了如何基于.NET/C#,開發面向Windows Phone 7,iPhone及Android三個平臺的應用程序,以及其中的注意事項?! ∈紫菴hris列舉了三個平臺...
一、數據并發帶來的各種情況 ①臟讀:事務A讀到事務B尚未提交的數據,并基于這個數據進行后續操作 ?、诓豢芍貜妥x:事務A讀取數據后,被事務B修改或刪除,事務A再次讀取時前后兩次讀取的數據不一致 ?、刍孟褡x:...