この例も比較的よく理解されているため、コードを提示するだけです。
ユニットパターン;
インタフェース
ダイアログを使用します。
タイプ
TAudioPlayer=クラス;
TCommand=クラス
公共
プロシージャ実行;仮想;抽象;
終わり;
TPlayCommand=クラス(TCommand)
プライベート
オーディオプレーヤー:TAudioPlayer;
公共
プロシージャの実行;オーバーライド;
プロシージャPlaycommand(AP:TAudioPlayer);
終わり;
TStopCommand=クラス(TCommand)
プライベート
オーディオプレーヤー:TAudioPlayer;
公共
プロシージャの実行;オーバーライド;
プロシージャStopComman(AP:TAudioPlayer);
終わり;
TRewindCommand=クラス(TCommand)
プライベート
オーディオプレーヤー:TAudioPlayer;
公共
プロシージャの実行;オーバーライド;
プロシージャRewindCommand(AP:TAudioPlayer);
終わり;
TKeyPad=クラス
プライベート
プレイコマンド:Tコマンド;
停止コマンド:T コマンド;
RewindCommand:TCommand;
公共
コンストラクターCreate(PlayC,StopC,RewindC:TCommand);virtual;
プロシージャプレイ();
プロシージャストップ();
プロシージャ巻き戻し();
終わり;
TAudioPlayer=クラス
公共
プロシージャプレイ();
プロシージャストップ();
プロシージャ巻き戻し();
終わり;
TClient=クラス
プライベート
キーパッド:TKeyPad;
オーディオプレーヤー:TAudioPlayer;
公共
コンストラクター作成();
プロシージャテスト();
終わり;
実装
{TKeyPad}
constructorTKeyPad.Create(PlayC,StopC,RewindC:TCommand);
始める
PlayCommand:=PlayC;
StopCommand:=StopC;
RewindCommand:=RewindC;
終わり;
プロシージャTKeyPad.play;
始める
PlayCommand.execute;
終わり;
プロシージャTKeyPad.rewind;
始める
RewindCommand.execute;
終わり;
プロシージャTKeyPad.stop;
始める
StopCommand.execute;
終わり;
{TAudioPlayer}
プロシージャTAudioPlayer.play;
始める
ShowMessage('play');
終わり;
プロシージャTAudioPlayer.rewind;
始める
ShowMessage('rewind');
終わり;
プロシージャTAudioPlayer.stop;
始める
ShowMessage('停止');
終わり;
{TPlayコマンド}
プロシージャTPlayCommand.execute;
始める
継承された。
AudioPlayer.play();
終わり;
プロシージャTPlayCommand.Playcommand(AP:TAudioPlayer);
始める
self.AudioPlayer:=AP;
終わり;
{TRewindコマンド}
プロシージャTRewindCommand.execute;
始める
継承された。
AudioPlayer.Rewind;
終わり;
プロシージャTRewindCommand.RewindCommand(AP:TAudioPlayer);
始める
AudioPlayer:=ap;
終わり;
{TStopコマンド}
プロシージャTStopCommand.execute;
始める
継承された。
AudioPlayer.Stop;
終わり;
プロシージャTStopCommand.StopComman(AP:TAudioPlayer);
始める
AudioPlayer:=ap;
終わり;
{TCクライアント}
コンストラクターTClient.Create;
始める
AudioPlayer:=TAudioPlayer.Create();
終わり;
プロシージャ TClient.test;
変数
プレイコマンド:Tコマンド;
停止コマンド:T コマンド;
RewindCommand:TCommand;
始める
PlayCommand:=TPlayCommand.Create;
StopCommand:=TStopCommand.Create;
RewindCommand:=TRewindCommand.Create;
KeyPad:=TKeyPad.Create(PlayCommand,StopCommand,RewindCommand);
キーパッド.ストップ;
KeyPad.play;
キーパッド.巻き戻し;
キーパッド.ストップ;
終わり;
終わり。