hand first 設計模式 命令模式

2021-08-30 02:57:19 字數 2745 閱讀 6025

命令模式: 將請求封閉成物件,這可以讓你使用不同的請求,佇列.或者日誌請求來引數化其他物件.命令模式式可支援撤銷技術操作.

例項需求:

命令介面

public inte***ce command

開關介面

public inte***ce switch

例項燈

public class light implements switch

//開操作

public void on()

//關操作

public void off()

}

開燈命令

public class lightoncommand implements command 

@override

//開燈

public void execute()

@override

//撤消操作.因為燈只有二種狀態所以撤消操作就是關燈

public void undo()

}

關燈操作

public class lightoffcommand implements command

@override

public void execute()

@override

public void undo()

}

電視

public class tv implements switch 

@override

public void off()

@override

public void on()

}

//開電視

public class tvoncommand implements command

@override

public void execute()

@override

public void undo()

}

關電視

public class tvoffcommand implements command 

@override

public void execute()

@override

public void undo()

}

空命令

public class nocommand implements command 

@override

public void undo()

}

搖控器

public class controler 

}//根據介面號設定開關命令

public void setprot(int index,command oncommand,command offcommand)

//根據介面號執行開命令

public void onbutton(int index)

//根據介面號執行關命令

public void offbuffon(int index)

//撤消操作

public void undobutton()

}

關閉看電視組合命令

public class looktvoffcommand implements command 

@override

//執行命令組合

public void execute()

}@override

//撤消命令組合

public void undo()

}}

開啟看電視組合命令

public class looktvoncommand implements command 

@override

public void execute()

}@override

public void undo()

}}

測試類

public class test ;

//封裝不看電視的組合命令

command looktvoffcommands = ;

//看電視命令

looktvoncommand looktvoncommand = new looktvoncommand(looktvoncommands);

//不看電視命令

looktvoffcommand looktvoffcommand = new looktvoffcommand(looktvoffcommands);

control.setprot(1, looktvoncommand, looktvoffcommand);

control.onbutton(1);

control.offbuffon(1);

control.undobutton();

}}

當需要將發出請求的物件和執行請求的物件解耦的時候,使用命令模式.

hand first 設計模式 工廠模式

工廠模式定義,建立乙個物件介面,但由子類決定要例項化的類是哪乙個.工廠方法讓類把例項化推遲到子類.抽象的比薩商品類 public abstract class piazzstore 讓子類去實現 public abstract piazz createpiazz string name 中國比薩商店...

hand first 設計模式 單例模式

單例模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點.public class test public static test getinstance return test 上面單例模式 採用延遲載入,在需要的時候再生成例項.但是多執行緒的情況可能會產生去多個例項.多執行緒同時訪問下面 會產生...

hand first 設計模式 模板方法模式

模板方法模式 在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中.模板方法使得子類可以在不改變演算法結構的情況下,重新演算法.重新定義演算法中的某些步驟.咖啡因飲料超類 咖啡因飲料超類 author panxiuyan public abstract class caffeinbeverag...