您當(dāng)前位置: 主頁 > 資訊動(dòng)態(tài) > IT人物 >
我們?cè)谶\(yùn)用面向?qū)ο蠹夹g(shù)的時(shí)候,是用類概念從內(nèi)部結(jié)構(gòu),行為來運(yùn)用,來設(shè)計(jì)實(shí)現(xiàn)計(jì)算邏輯。
有很多的時(shí)候我們不能準(zhǔn)確把握一個(gè)事物的本質(zhì),可能就是光從一個(gè)角度來看問題。既然從內(nèi)部看了也實(shí)踐了,那么現(xiàn)在就可以從外部角度來觀察事物。對(duì)象有它的環(huán)境,在環(huán)境中分工合作,這個(gè)就像我們的現(xiàn)實(shí)社會(huì),人與人之間,人和大自然都是分工協(xié)作,和諧共處的。
話題扯遠(yuǎn)了,再回到我們的程序世界中,假如有一天我們要去社區(qū)辦個(gè)什么事情,去影院看個(gè)什么電影等等這些都可以抽象,建立一個(gè)模型,我們?nèi)ド鐓^(qū)辦事,電影院看電影都是去享受服務(wù)的,把這些服務(wù)的提供者都抽象到程序世界中,就可以用類來表示同時(shí)提供辦事、看電影等行為。社區(qū)辦事,影院看電影這兩個(gè)風(fēng) 馬牛不相及的事情,在程序世界可以抽象成兩個(gè)提供不同服務(wù)的對(duì)象。從契約的角度,任何實(shí)現(xiàn)了這些服務(wù)的對(duì)象,都需要履行服務(wù)契約,從對(duì)象外部來講我們是不需要知道這些對(duì)象內(nèi)部的,也就是我去辦事情,看電影,關(guān)鍵不是在什么地方能夠把握解決這些問題,而是什么服務(wù)能提供給我以完成目的。
試想有一天去看電影的同時(shí)也能把社區(qū)辦事的給解決了。那么就不能光光用類這個(gè)抽象事物來表示和思考,另外還有一個(gè)東西在設(shè)計(jì)模式中沒有明顯提到的,就是幾乎每種模式里面都有兩個(gè)層次,一個(gè)就是Abstract層次,一個(gè)就是Concrete層次。說白了就是對(duì)象的上面還有一個(gè)接口的東西,這里暫且不論Interface和Abstract Class的區(qū)別。這個(gè)時(shí)候想想那句“優(yōu)先使用組合”的錦囊妙計(jì),那么既能辦事又能看電影的超級(jí)英雄便能應(yīng)運(yùn)而生,當(dāng)然在分析的時(shí)候我們不需要具體知道這個(gè)到底是什么地方來提供這些服務(wù)的,只需要設(shè)計(jì)辦事和看電影兩個(gè)接口就可以了,至于誰來實(shí)現(xiàn)這個(gè)服務(wù),I don’t care.
相關(guān)文章