1.寫在前面的話

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


2.反射和代理

反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;

在運行時判斷任意一個對象所屬的類;

在運行時構造任意一個類的對象;

在運行時判斷任意一個類所具有的成員變量和方法;

網友評論