定義和實現分離,oop的程式設計,或則.....我也不知道,這邊文章改定義什麼樣的標題好呢,然後......
我們來看一段**的優化,來逐步的體會一下;
publicenum
scheduletype
//這種方式,我們可以使用多種方式來進行優化滴呀;
//簡單的swich case 方式滴啊;
//然後就是我們的 委託的方式滴呀
//還有我們的 就是我們的過載的方式滴啊
//多種多樣的方式和寫法滴啊;
public
class
taskinfo
}}
接下來我們做到了「看似分離的乙個狀態滴呀」,注意,我這裡強調的是看似;
publicclass
taskinfo2}}
//這樣就將我們的方法定義和我們的具體實現給分離的滴呀;
public
class scheduleactivity //
動態的擴充套件就可以在我們的這裡進行了滴啊;
public
void daily(string
str)
public
void weekly(string
str)
}
然後,就算我們通過委託將將具體的實現進行分離;也是無預計與是的,以為,我們優化的開始方向就錯了;這樣優化,有種多此一舉的感覺;
publicdelegate
void del(string
str);
public
class
taskinfo2
del(val);
}}
其實一開始,我們只是在改變**所在的地方,並沒有實現真正意義的分離,
對於乙個有經驗的oo開發者,一旦看到switch,if(type=typeof(…))之類的**馬上會提高警惕
把真正意義的上實現暴露在**的外部註冊,而是不是內部;
這些改寫,也許會好一點底呀;
//到了某個點之後,呼叫什麼樣的方法,我們不寫在這裡,而是通過事件在外部進行我們的註冊
//這樣我們的額程式,就有很大的擴充套件和提公升性了滴呀;
//這就給了我們這個類,足夠的擴充套件性了滴呀;
public
class
taskinfo }}
這裡就是我們外部呼叫類的滴呀;將我們的定義和實現分離的滴呀;
public
class
outerclass
}}
好了,上面的優化,之路很彆扭,因為一開始的房方向就錯了,好了,現在我們來oop優化吧
switch中進行變動;所以,並不是那麼的完美,那麼我們再進一步的進行優化;
publicclass
schedule
}public
class
onceschedule : schedule
}public
class
dailyschedule : schedule
}public
class
weeklyschedule : schedule
//同樣我們可以使用介面來實現,不過這種方式,接種方式顯德更好一些滴呀
}
over~
然後再來看看我們一段js** oop的優化過程;
//div0 - 長度長度加1
//div1
//div2
//div3
//div4
//div5
//div6
//div7
//上面這個就是面向過程的寫法;
function
change()
function
changeinfo(id,addval)
function
do()
//下面這個就是物件導向的寫法;
function
divobj(id,addval)
//獲取到的東東,已經是乙個物件了,這個叫物件的多台擴充套件滴呀;
//正確的做法是應該對它進行拓展,英文,當document.getelementbyid(id) 之後,已經是乙個物件了;
//有點類似於它的擴充套件了滴呀
}
function
changelen()
//個人覺得,貫穿oo 的就是我們的this關鍵字
C 模板應用 模板定義和實現分離
關於c 中類的模板,慣常的用法都是把實現和定義放在標頭檔案裡了事。這樣的問題是,加大了標頭檔案的長度,減低了模板 的可讀性,還有就是破壞了物件導向的隱藏實現的規則。下面就是這種問題的兩個解決方案的總結。假設模板 如下 模板定義 a.h include template class ttest 模板實...
C 模板定義和實現分離導致的編譯錯誤
今天在實現乙個二叉樹的時候,用到了模板,沒在意,和平時一樣寫了兩個檔案 binarytree.h,binarytree.cpp。思路和平時一樣,h檔案中定義了模板類,然後在cpp檔案中實現了一些功能函式。然後在test.cpp中測試,遇到了一些問題 問題出現如下 test binarytree.cp...
C 模板應用 讓模板定義和實現分離的方法
關於c 中類的模板,慣常的用法都是把實現和定義放在標頭檔案裡了事。這樣的問題是,加大了標頭檔案的長度,減低了模板 的可讀性,還有就是破壞了物件導向的隱藏實現的規則。下面就是這種問題的兩個解決方案的總結。假設模板 如下 1 模板定義 a.h 2 include 3 4 template 5 class...