好了,閒話少敘,我們開始吧:
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"); }