3月
25
2008
分類:
最近更新:
2008-03-25
關於分割程式功能以及 mix-in 和 include
最近碰到一個分割程式功能的問題,不得已必須用到反映的功能,寫了一個簡單的抽象插件類別 http://blog.pixnet.net/HACGIS/post/15612808。 不知道你有沒有更好的解法? tokimeki
關於這個問題,我是用所謂「混成(mix-in)」的概念實踐。先前我寫過2篇: PHP 實踐 mix-in 概念、PHP 實踐 mix-in 概念 part 2。
另外一位網友是用 include
,參考:
mix-in?。嚴格來說那不是 mix-n ,稍後說明。這有3個缺點。
第一,因為 include
會進行檔案開啟動作,當你大量使用這技巧時,將會降低效能。
第二,一個小小的語法缺點,程式外觀不甚雅觀。例如:
當然,這不算什麼大缺點。但從動態性來說,卻可以一眼看出問題。稍後說明。
第三,也是最重要的一點:嚴格來說它不具動態性,不算混成(mix-in)。
混成(mix-in)的特點是「由外而內的重構」。你要混入新方法的程式碼寫在目標類別定義之外。但用 include
時,你要把它 (也就是 'include xxx
' 的程式碼) 寫在目標類別定義中。而且不能在運行時變更。
使用混成(mix-in)添加新的行為時,我並不需要回頭修改目標類別的程式碼內容。而是在目標類別以外的地方做這件事。如下例,使用我之前實作的 MixableClass
。
A.php
others.php
透過混成,我不用回頭修改 A.php 這個源碼的內容,而是在別的地方做這件事。是「由外而內」的重構,所以說是 "mix-in"。
樂多舊網址: http://blog.roodo.com/rocksaying/archives/5751881.html
樂多舊回應