1. 程式人生 > >【胡思亂想】命令模式 與 Thread Runnable

【胡思亂想】命令模式 與 Thread Runnable

任務 execute 調用 方法 targe all 方式 command 對象

實現線程任務有兩種方式,一種是創建Runnable/Callable對象,傳遞給Thread。另一種是子類重寫Thread的run方法。

我覺得前一種像極了命令模式,或者說應該是命令模式的一個使用案例。

相似如下:

(1)Runnable 接口,只定義一個"()V"(表示無參,返回值為void)的方法run。創建Runnable對象的方式也有很多,這裏就提一種,那就是定義一個類A實現Runnable接口。這個類A一般還有其他引用其他對象,然後在run方法裏對其進行調用,來完成任務。

對應命令模式,Command接口,也只有一個()V方法,execute。Command的實現類,存有Receiver,然後在execute方法裏對Receiver進行操作。

(2)Thread對象,通過構造方法把Runnable傳入,啟動線程後,OS線程將回調Thread.run方法,在這種情況下(即沒有覆蓋Thread.run),其將調用target.run(),執行Runnable對象。

對應命令模式,Invoker,通過setCommand方法傳入命令對象,然後在其某個方法中調用命令對象的execute方法。

【胡思亂想】命令模式 與 Thread Runnable