1.寫(xiě)在前面的話

最近都在看framework的東西,也幾天沒(méi)有寫(xiě)什么東西,今天有點(diǎn)時(shí)間寫(xiě)下上次面試遇到的一個(gè)問(wèn)題。問(wèn)題大概是這樣的,如果我需要統(tǒng)計(jì)頁(yè)面的點(diǎn)擊事件,即添加埋點(diǎn)進(jìn)行統(tǒng)計(jì),如何實(shí)現(xiàn)?我當(dāng)時(shí)回答的是反射加代理去實(shí)現(xiàn)這個(gè)功能。有朋友說(shuō),這不是很簡(jiǎn)單嘛,直接用代理模式就OK了啊,干嘛還反射。的確,如果在項(xiàng)目初期就確定了這個(gè)需求的話,我想大部分人都會(huì)想到用代理模式來(lái)實(shí)現(xiàn)這個(gè)功能。但是如果項(xiàng)目已經(jīng)穩(wěn)定運(yùn)行了一段時(shí)間呢?我們不可能把每個(gè)事件都重新替換成我們的代理類(lèi)吧?這樣重復(fù)的工作太沒(méi)有效率了,這里我們可以通過(guò)反射加代理技術(shù)來(lái)實(shí)現(xiàn)這個(gè)功能。


2.反射和代理

反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠知道這個(gè)類(lèi)的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;

在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類(lèi);

在運(yùn)行時(shí)構(gòu)造任意一個(gè)類(lèi)的對(duì)象;

在運(yùn)行時(shí)判斷任意一個(gè)類(lèi)所具有的成員變量和方法;

網(wǎng)友評(píng)論