1 享元模式的日常應用面向對象的思想確實(shí)很好地解決了抽象性的問(wèn)題,以至于在面向對象的眼中,萬(wàn)事萬(wàn)物一切皆對象。不可避免的是,采用面向對象的編程方式,可能會(huì )增加一些資源和性能上的開(kāi)銷(xiāo)。不過(guò),在大多數情況下,這種影響還不是太大,所以,它帶來(lái)的空間和性能上的損耗相對于它的優(yōu)點(diǎn)而言,基本上不用考慮。但是,在某些特殊情況下,大量細粒度對象的創(chuàng )建、銷(xiāo)毀以及存儲所造成的資源和性能上的損耗,可能...
2009-04-03 12:57
閱讀(12420) 評論(19) 1 單例模式的日常應用我們在瀏覽BBS、SNS網(wǎng)站的時(shí)候,常常會(huì )看到“當前在線(xiàn)人數”這樣的一項內容。對于這樣的一項功能,我們通常的做法是把當前的在線(xiàn)人數存放到一個(gè)內存、文件或者數據庫中,每次用戶(hù)登錄的時(shí)候,就會(huì )馬上從內存、文件或者數據庫中取出,在其基礎上加1后,作為當前的在線(xiàn)人數進(jìn)行顯示,然后再把它保存回內存、文件或者數據庫里,這樣后續登錄的用戶(hù)看到的就是更新后的當前在線(xiàn)...
2009-04-02 09:22
閱讀(5092) 評論(7) 目前的例子,暫時(shí)都是java語(yǔ)言書(shū)寫(xiě),稍后,我會(huì )補上.net和php語(yǔ)言版。?1 什么是觀(guān)察者模式 我們在日常生活中有很多觀(guān)察者模式應用的場(chǎng)景。比如,凡是去過(guò)銀行營(yíng)業(yè)大廳辦理業(yè)務(wù)的人,大多會(huì )有這么一段經(jīng)歷:辦理業(yè)務(wù)之前,先要在營(yíng)業(yè)大廳的門(mén)口領(lǐng)取一個(gè)排隊號,然后你就可以在休息區等待叫號,當輪到自己辦理業(yè)務(wù)的時(shí)候,某個(gè)柜臺上方懸掛的小顯示屏就會(huì )出現“請XXX號到XX柜臺辦理業(yè)務(wù)”。有的時(shí)候,某...
2009-03-23 16:30
閱讀(10142) 評論(18) 4 里氏代換原則(Liskov Substitution Principle, LSP)4.1 什么是里氏代換原則 里氏代換原則是由麻省理工學(xué)院(MIT)計算機科學(xué)實(shí)驗室的Liskov女士,在1987年的OOPSLA大會(huì )上發(fā)表的一篇文章《Data Abstraction and Hierarchy》里面提出來(lái)的,主要闡述了有關(guān)繼承的一些原則,也就是什么時(shí)候應該使用繼承,什么時(shí)...
2009-03-16 23:56
閱讀(5508) 評論(25) 2 開(kāi)閉原則(Open-Closed Principle,OCP)2.1 什么是開(kāi)閉原則 開(kāi)閉原則是面向對象設計中“可復用設計”的基石,是面向對象設計中最重要的原則之一,其它很多的設計原則都是實(shí)現開(kāi)閉原則的一種手段。 1988年,Bertrand Meyer在他的著(zhù)作《Object Oriented Software Construction》中提出了開(kāi)閉原則,它的...
2009-03-12 23:25
閱讀(3474) 評論(9) 1 OO的設計原則 采用面向對象的分析和設計思想,為我們分析和解決問(wèn)題提供了一種全新的思維方式。我們在拿到需求之后(略去OOA,以后補全),接下來(lái)的問(wèn)題就是:如何對系統進(jìn)行面向對象的設計呢? 按照軟件工程的理論,面向對象的設計要解決的核心問(wèn)題就是可維護性和可復用性,尤其是可維護性,它是影響軟件生命周期重要因素。通常情況下,軟件的維護成本遠遠大于初期開(kāi)發(fā)成本。 一個(gè)可...
2009-03-10 17:04
閱讀(4493) 評論(22) 1 IoC理論的背景 我們都知道,在采用面向對象方法設計的軟件系統中,它的底層實(shí)現都是由N個(gè)對象組成的,所有的對象通過(guò)彼此的合作,最終實(shí)現系統的業(yè)務(wù)邏輯。 圖1:軟件系統中耦合的對象 如果我們打開(kāi)機械式手表的后蓋,就會(huì )看到與上面類(lèi)似的情形,各個(gè)齒輪分別帶動(dòng)時(shí)針、分針和秒針順時(shí)針旋轉,從而在表盤(pán)上產(chǎn)生正確的時(shí)間。圖1中描述的就是這樣的一個(gè)齒輪組,它擁有多個(gè)獨立的齒...
2009-03-08 19:04
閱讀(13182) 評論(36) 3.5 詳解面向對象的編程(OOP)3.5.1 什么是面向對象 剛接觸編程的時(shí)候,多數人本能的反映可能是面向過(guò)程(OP)的,而不是面向對象(OO)的。這種現象其實(shí)是很正常的,改變思維方式是需要一個(gè)過(guò)程的,我大體歸納了一下其形成的原因:1、直接原因 你還沒(méi)有養成面向對象分析問(wèn)題和解決問(wèn)題的習慣。建立面向對象的思維方式需要一定時(shí)間的訓練和揣摩才能形成,所以你可以在學(xué)...
2009-03-05 22:45
閱讀(5508) 評論(24) 3 架構師的職責 近來(lái)看到CSDN上有個(gè)CTO俱樂(lè )部,里面聊得是不亦樂(lè )乎。我懷著(zhù)無(wú)比崇敬的態(tài)度,拜讀了一下牛人們的發(fā)言。里面有個(gè)哥們發(fā)起一個(gè)話(huà)題:“CTO, 你多久沒(méi)有寫(xiě)程序了?”。有人回答:“不寫(xiě)代碼的CTO,屬于......這公司問(wèn)題大了!”??吹竭@里,我就趕緊撤了,怕忍不住反駁幾句,反而遭到牛人們的群毆。試想,一個(gè)上點(diǎn)規模的IT公司,還得靠CTO來(lái)寫(xiě)程序的話(huà),那是不是才叫問(wèn)...
2009-02-28 22:19
閱讀(11548) 評論(44) 2.3 面向過(guò)程編程(OPP) 和面向對象編程(OOP)的關(guān)系 關(guān)于面向過(guò)程的編程(OPP)和面向對象的編程(OOP),給出這它們的定義的人很多,您可以從任何資料中找到很專(zhuān)業(yè)的解釋?zhuān)晕业慕?jīng)驗來(lái)看,講的相對枯燥一點(diǎn),不是很直觀(guān)。除非您已經(jīng)有了相當的積累,否則說(shuō)起來(lái)還是比較費勁。我是個(gè)老程序員出身,雖然現在的日常工作更多傾向了管理,但至今依然保持編碼的習慣,這句話(huà)什么意思呢?...
2009-02-24 23:28
閱讀(8589) 評論(44) 1、引言 機算機科學(xué)是一門(mén)應用科學(xué),它的知識體系是典型的倒三角結構,所用的基礎知識并不多,只是隨著(zhù)應用領(lǐng)域和方向的不同,產(chǎn)生了很多的分支,所以說(shuō)編程并不是一件很困難的事情,一個(gè)高中生經(jīng)過(guò)特定的訓練就可以做得到。但是,會(huì )編程和編好程絕對是兩碼事,同樣的程序員,有的人幾年之后成為了架構師,有的人卻還在不停地coding,只不過(guò)ctrl-c、ctrl-v用得更加純熟了。在中國,編程人員最終的歸途無(wú)外...
2009-02-22 20:40
閱讀(11969) 評論(69)