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