1、意圖
軟體復用的關鍵是尋找相似性,在很多情況下,相似性表現為業務流程相似,但是業務
單元具有特殊性。如果是這種情況,可以定義乙個操作中的業務流程骨架,而將一些業務單
元的實現延伸到子類中去,使得子類可以不改變乙個業務流程的的結構,即可重新定義該業
務流程的某些特定業務單元。這裡需要復用的是業務流程的結構,也就是操作步驟,而步驟
的實現(或者是業務單元的實現)可以在子類中完成。
2、使用場合
1)一次性實現乙個業務流程的不變部分,並且將可變的行為留給子類來完成。
2)各子類公共的行為應該被提取出來並集中到乙個公共父類中以避免**的重複。首
先識別現有業務的不同之處,並且把不同部分分離為新的操作,最後,用乙個呼叫這些新的
操作的模板方法來替換這些不同的**。
3)控制子類的擴充套件。
3、結構
模板方法的結構是使用乙個抽象類,在抽象類中定義模板方法的關鍵是:
在乙個非抽象方法中呼叫呼叫抽象方法,而這些抽象方法在子類中具體實現。
**:public abstract class payment
public void setamount(double value)
public string gosale()
public abstract string action();
}class cashpayment extends payment
}測試:
public class test
假定系統已經投運,使用者提出新的需求,要求加上信用卡支付和支票支付,可以這樣寫:
public class creditpayment extends payment
}class checkpayment extends payment
}呼叫:
public class test
}
JAVA 單元測試 字段封裝 構造器 方法過載
單元測試主要是用於提高編寫 質量,編寫單元測試來對我們所編寫的方法進行測試。單元測試是開發人員編寫 單元測試依賴junit 這個框架 單元測試方法上需加 test assert 斷言,主要是用於判斷測試的通過的條件。public是公有的,任何人都可以去訪問它修飾的成員變數,沒辦法去控制值的邏輯校驗或...
self 利用self在類封裝的方法中輸出物件屬性
class cat def eat self 哪乙個物件呼叫的方法,self就是哪乙個物件的引用 print s 愛吃魚 self.name def drink self print s 要喝水 self.name 建立貓物件 tom cat 可以使用 屬性名 利用賦值語句就可以了 tom.name...
模板引數的編譯時檢查方法,利用typedef
很多情況下,你需要使用模板引數,但又不知道使用者輸入的模板引數是否正確,是否在範圍內等,此時可以利用typedef的特性實現一種模板引數檢查機制。template size t sz 0 模板引數sz預設 0 class templateclass 注 typedef的這個int array顯然沒有...