《head first 設計模式》 學習筆記,碼雲同步更新中目錄如有錯誤或不足之處,請一定指出,謝謝~
設計原則
設計模式
命令模式(command pattern)
定義: 結構
分析命令模式的本質是對命令進行封裝,將命令發出和執行的責任分割開
優點:缺點:
使用場景:
案例
/**
* 命令介面
**/public inte***ce command
/**
* 有7組開關的遙控器
**/public class remotecontrol
lastcommand = nocommand;
}/**
* 往遙控器開關上設定命令
*/public void setcommand(int slot, command oncommand, command offcommand)
/*** 開
* @param slot
*/public void pushonbutton(int slot)
/*** 關
* @param slot
*/public void pushoffbutton(int slot)
/*** 撤銷
*/public void pushundobutton()
/*** 重寫tostring方法,給出遙控器說明書
* @return
*/@override
public string tostring()
return stringbuffer.tostring();
}}
家電
/**
* 電燈
**/public class light
public void on()
public void off()
}/**
* 電扇
**/public class electricfan
public void speedhigh()
public void speedmedium()
public void speedlow()
public void turnoff()
public int getspeed()
}/**
* 音響
**/public class stereo
/***/
public void playcd()
/*** 設定音量
*/public void setvolume(int volume)
/*** 關機
*/public void off()
}
具體命令
/**
* 空命令
* * 空物件本身也可以被當做一種設計模式。
* 可以用於當你不想返回乙個有意義的物件時。
* 遙控器在最初不可能設定了有意義的命令物件,
* 使用空物件可以避免沒必要的報錯。
**/public class nocommand implements command
@override
public void undo()
}/**
* 開啟電燈的命令
**/public class lightoffcommand implements command
@override
public void execute()
@override
public void undo()
}// 關閉電燈 略
/** * 電風扇 高風速 命令
**/public class electricfanspeedhighcommand implements command
@override
public void execute()
/*** 撤銷,恢復之前的風速
*/@override
public void undo() else if (prevspeed == electricfan.medium) else if (prevspeed == electricfan.low) else if (prevspeed == electricfan.off)
}}// 其他電扇命令 略
/** * 音響開啟命令
**/public class stereooffwithcdcommand implements command
@override
public void execute()
@override
public void undo()
}// 音響關閉命令 略
/** * 巨集命令
**/public class macrocommand implements command
/*** 一鍵全部執行
*/@override
public void execute()
}@override
public void undo()
}}
測試類
/**
* 遙控器測試
**/public class remotecontroltest ;
command turnoffalllightsarr = ;
macrocommand turnonalllights = new macrocommand(turnonalllightsarr);
macrocommand turnoffalllights = new macrocommand(turnoffalllightsarr);
control.setcommand(4, turnonalllights, turnoffalllights);
control.pushonbutton(4);
control.pushoffbutton(4);
control.pushundobutton();
}}
設計模式 命令設計模式
一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象command 命令的具體實現concretecommand 命令處理者抽象ireceiver 命令處理者的具體實現concretereceiver 命令的呼叫者invoker 客戶端client...
設計模式 命令模式
1 命令模式的角色組成 1 命令角色 command 生命執行操作的介面。介面或抽象類來實現。2 具體命令角色 concrete command 將乙個接收者物件繫結於乙個動作 呼叫接收者相應的操作,以實現命令角色宣告的執行操作的介面。3 客戶角色 client 建立乙個具體命令物件 並可以設定它的...
設計模式 命令模式
1 command.h ifndef command h define command h include include include using namespace std class chef 廚師,具體命令的執行者 class command 命令基類 class makemuttonco...