你真的會使用命令模式嗎?

2021-10-08 08:47:59 字數 2943 閱讀 4246

命令模式是一種資料驅動設計模式,它屬於行為型模式,請求以命令的形式包裹在物件中,並傳給呼叫物件,呼叫物件尋找可以處理該命令的合適的物件,並把該命令傳給相應的物件。

一、建立命令模式uml類圖

二、建立命令模式的步驟

(1):建立命令介面command

(2):建立命令接收者lightreceiver

(3):建立實現類lightoffcommand、lightoncommand、nocommand

(4):建立命令操作者remotecontroller

(1):建立命令介面command

/**

* @author yly

* @classname command

* @date 2020/7/21

* @version 1.0.2

*/public

inte***ce

command

(2):建立命令接收者lightreceiver
/**

* @author yly

* @classname lightreceiver

* @date 2020/7/21

* @version 1.0.2

*/public

class

lightreceiver

public

void

off(

)}

(3):建立實現類lightoffcommand、lightoncommand、nocommand
/**

* @author yly

* @classname lightoffcommand

* @date 2020/7/21

* @version 1.0.2

*/public

class

lightoffcommand

implements

command

@override

public

void

execute()

@override

public

void

undo()

}

/**

* @author yly

* @classname lightoncommand

* @date 2020/7/21

* @version 1.0.2

*/public

class

lightoncommand

implements

command

@override

public

void

execute()

@override

public

void

undo()

}

/**

* @author yly

* @classname nocommand 空命令用於初始化,防止空指標

* @date 2020/7/21

* @version 1.0.2

*/public

class

nocommand

implements

command

@override

public

void

undo()

}

(4):建立命令操作者remotecontroller
/**

* @author yly

* @classname remotecontroller

* @date 2020/7/21

* @version 1.0.2

*/public

class

remotecontroller

}/**

* 給按鈕設定命令

** @param no 按鈕

* @param oncommand

* @param offcommand

*/public

void

setcommand

(int no, command oncommand, command offcommand)

/** * 按下開按鈕

*/public

void

onbutton

(int no)

/** * 按下關按鈕

*/public

void

offbutton

(int no)

/** * 按下撤銷按鈕

*/public

void

undobutton()

}

使用cient類來接受和執行命令
/**

* @author yly

* @classname client

* @date 2020/7/21

* @version 1.0.2

*/public

class

client

}

執行結果
按下燈的按鈕,操作電燈

電燈開啟了。。。

電燈關閉了。。。

電燈開啟了。。。

命令模式在spring的jdbctemplate中運用,具體的實現方法是query()方法中的statementcallback介面。

你真的會使用assert嗎?

寫這篇部落格源於在閱讀lighttpd源 是遇到的乙個關於assert應用的疑問。buffer buffer init void 這裡的assert b 似乎有問題,實際release版本在執行中難道不會發生malloc返回null的情況嗎?之後在閱讀 writing solid code 一書時找...

你真的會使用assert嗎?

寫這篇部落格源於在閱讀lighttpd源 是遇到的乙個關於assert應用的疑問。複製 複製 buffer buffer init void 複製 複製 這裡的assert b 似乎有問題,實際release版本在執行中難道不會發生malloc返回null的情況嗎?之後在閱讀 writing sol...

你真的會使用assert嗎?

寫這篇部落格源於在閱讀lighttpd源 是遇到的乙個關於assert應用的疑問。buffer buffer init void 這裡的assert b 似乎有問題,實際release版本在執行中難道不會發生malloc返回null的情況嗎?之後在閱讀 writing solid code 一書時找...