設計模式 自己手動寫乙個命令模式

2021-07-04 20:47:21 字數 3126 閱讀 5351

.

命令模式: 將「請求」封裝成物件,以便使用不同的請求、佇列、日誌來引數化其他物件。命令模式也支援可撤銷的操作。

命令物件將動作和接收者(當作的執行者)包進物件中。這個物件之暴露乙個execute()方法. 命令也可以用來實現日誌和事務系統。巨集命令是命令的一種簡單延伸,允許呼叫多個命令。

下面是命令模式的乙個類圖:

乙個案例的源**如下:

package command;

/** * 命令物件介面

* @author arvon

* */

public inte***ce command

package command;

public class lightoncommand implements command

@override

public void execute()

@override

public void undo()

}

package command;

public class lightoffcommand implements command

@override

public void execute()

@override

public void undo()

}

package command;

public class ceillingfanhighcommand implements command

public ceillingfanhighcommand(ceilingfan fan)

@override

public void undo() else if (prevspeed == ceilingfan.medium) else if (prevspeed == ceilingfan.low) else if (prevspeed == ceilingfan.off) }}

package command;

public class ceillingfanoffcommand implements command

@override

public void execute()

@override

public void undo() else if (prevspeed == ceilingfan.medium) else if (prevspeed == ceilingfan.low) else if (prevspeed == ceilingfan.off)

}}

package command;

/** * 什麼都不做 空物件

* @author administrator

* */

public class nocommand implements command

@override

public void undo()

}

package command;

/** * 遙控器 invoker 管理許多command物件

* @author arvon

* */

public class remotecontrol

}/**

* 設定命令

* @param slot 第幾個插槽

* @param oncommand

* @param offcommand

*/public void setcommand(int slot,command oncommand, command offcommand)

public void onbuttonwaspush(int slot)

public void offbuttonwaspush(int slot)

public void undobuttonwaspush()

public string tostring()

return stringbuff.tostring(); }

}

package command;

/** * 燈 命令的執行者

* @author administrator

* */

public class light

public void off()

}

package command;

/** * 電風扇 命令的執行者

* @author administrator

* */

public class ceilingfan

public void high()

public void medium()

public void low()

public void off()

public int getspeed()

}

package command;

/** * 測試類

* @author administrator

* */

public class commandtest

}

程式的輸出:

light is on...

light is off...

light is on...

living room ceiling fan is on high

living room ceiling fan is off

living room ceiling fan is on high

living room ceiling fan is off

自己手動寫乙個HashMap

目錄 public inte ce map public class hashmapimplements map 通過key 進行hash index下表陣列 當前陣列對應的物件entry 判斷當前這個物件為空 如果是空的,直接可以儲存資料,如果不為空,就是hash衝突,所以要用鍊錶,然後返回這個儲...

自己手動寫乙個簡單的bs結構

拋去web框架,自己手寫乙個bs請求響應過程 自己建立乙個資料夾test,包含乙個hello.html 和乙個webserver.py 自己在html檔案裡面寫一些標籤 下面是webserver.py的主要內容 server obj.serve forever webserver.py主要是在本地啟...

自己寫乙個LIST

pragma once forward declarations templateclass clistnode templateclass clist template class clistnode void insertafter t data template void clistnode ...