JAVA設計模式學習第三天 設計模式之Chain of Responsibility——項目篇

      最近單位接到一個軟件項目,要求在規定的時間內完成,因此我們項目組成員就開始忙活了,我們都知道機械加工是有工序(Procedure)要求的,其實我們軟件開發也是有工序(Procedure)要求的,即首先先由分析設計人員對系統進行分析設計,然後再由程序員進行編碼,最後再由測試人員對整個系統進行測試。有人可能會說,我就偏不這樣,我就要先編碼,再分析設計,當然了,你要這樣做我也沒辦法,不過你要真這麼做,嘿嘿,我想你最後可要吃苦頭的,不信你就試試看。
好了,閒話少敘,我們開始吧:
1、我們先定義工序(Procedure)這樣一個接口類:
public interface Procedure  {
    public abstract void nextProcedure(Procedure procedure);  //下一工序
    public abstract void executeProcedure(String aim);  //執行工序   
}
2、定義工序(Procedure)接口的實現類:
A:分析設計工序(DesignProcedure) public class DesignProcedure implements Procedure { private Procedure nextProcedure = null; private String procedureName = "Design"; //該工序名 public void nextProcedure(Procedure procedure) { //下一工序 nextProcedure = procedure; } public void executeProcedure(String currentProcedure) { //執行工序 if(currentProcedure.equals(procedureName)) {//如果當前工序和該工序相符 System.out.println("進行系統分析設計"); } else { if(nextProcedure != null) { //如果當前工序和該工序不相符則轉入下一工序 nextProcedure.executeProcedure(currentProcedure); } } } }
B:編碼工序(CodeProcedure) public class CodeProcedure implements Procedure { private Procedure nextProcedure = null; private String procedureName = "Code"; //該工序名 public void nextProcedure(Procedure procedure) { //下一工序 nextProcedure = procedure; } public void executeProcedure(String currentProcedure) { //執行工序 if(currentProcedure.equals(procedureName)) {//如果當前工序和該工序相符 System.out.println("進行編碼工作"); } else { if(nextProcedure != null) { //如果當前工序和該工序不相符則轉入下一工序 nextProcedure.executeProcedure(currentProcedure); } } } } C:測試工序(TestProcedure) public class TestProcedure implements Procedure { private Procedure nextProcedure = null; private String procedureName = "Test"; //該工序名 public void nextProcedure(Procedure procedure) { //下一工序 nextProcedure = procedure; } public void executeProcedure(String currentProcedure) { //執行工序 if(currentProcedure.equals(procedureName)) {//如果當前工序和該工序相符 System.out.println("進行系統測試"); } else { if(nextProcedure != null) { //如果當前工序和該工序不相符則轉入下一工序 nextProcedure.executeProcedure(currentProcedure); } } } } 3、編寫測試類: public class test { public static void main(String[] args) { DesignProcedure design = new DesignProcedure(); //分析設計工序 CodeProcedure code = new CodeProcedure(); //編碼工序 TestProcedure test = new TestProcedure(); //測試工序 design.nextProcedure(code); //定義分析設計工序的下一工序 code.nextProcedure(test); //定義編碼工序的下一工序 design.executeProcedure("Design"); //開始執行工序 design.executeProcedure("Code"); design.executeProcedure("Test"); }
4、說明:
A: Chain of Responsibility定義:Chain of Responsibility模式是用一系列類(classes)試圖處理一個請求request,這些類之間是一個鬆散的耦合,唯一共同點是在他們之間傳遞request.,也就是說,來了一個請求,A類先處理,如果沒有處理,就傳遞到B類處理,如果沒有處理,就傳遞到C類處理,就這樣象一個鏈條 (chain)一樣傳遞下去。
B:在本例中,分析設計工序(DesignProcedure)、編碼工序(CodeProcedure)和測試工序(TestProcedure)中的executeProcedure執行工序方法中都對當前工序和該工序進行了判斷,如果當前工序和該工序相符就執行該工序,如果當前工序和該工序不相符則轉入下一工序執行。
C:嘿嘿,其實說白了就是:是你的工作你幹,不是你的工作你就不要幹,順序往下傳該誰幹誰幹就是了。
來源: [url]http://garyfeng.blogchina.com/index.html[/url]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章