码迷,mamicode.com
首页 > Windows程序 > 详细

Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---命令模式之RemoteControlTest[转]

时间:2014-11-05 14:37:03      阅读:358      评论:0      收藏:0      [点我收藏+]

标签:des   blog   http   io   ar   os   for   sp   div   

bubuko.com,布布扣
  1bubuko.com,布布扣
  2bubuko.com,布布扣{《HeadFirst设计模式》之命令模式 }
  3bubuko.com,布布扣{ 本单元中的类为命令的接收者      }
  4bubuko.com,布布扣{ 编译工具 :Delphi7.0         }
  5bubuko.com,布布扣{ 联系方式 :guzh-0417@163.com }
  6bubuko.com,布布扣
  7bubuko.com,布布扣unit uReceiveObject;
  8bubuko.com,布布扣
  9bubuko.com,布布扣interface
 10bubuko.com,布布扣
 11bubuko.com,布布扣type
 12bubuko.com,布布扣  TLight = class(TObject)
 13bubuko.com,布布扣  private
 14bubuko.com,布布扣    FLocation: String;
 15bubuko.com,布布扣  public
 16bubuko.com,布布扣    constructor Create(aLocation: String);
 17bubuko.com,布布扣    procedure Open;
 18bubuko.com,布布扣    procedure Off;
 19bubuko.com,布布扣  end;
 20bubuko.com,布布扣
 21bubuko.com,布布扣  TCeilingFan = class(TObject)
 22bubuko.com,布布扣  private
 23bubuko.com,布布扣    FLevel   : Integer;
 24bubuko.com,布布扣    FLocation: String;
 25bubuko.com,布布扣    function GetSpeed: Integer;
 26bubuko.com,布布扣  public
 27bubuko.com,布布扣    constructor Create(aLocation: String);
 28bubuko.com,布布扣    procedure High;
 29bubuko.com,布布扣    procedure Medium;
 30bubuko.com,布布扣    procedure Low;
 31bubuko.com,布布扣    procedure Off;
 32bubuko.com,布布扣    property  Speed: Integer read GetSpeed;
 33bubuko.com,布布扣  end;
 34bubuko.com,布布扣
 35bubuko.com,布布扣  TGarageDoor = class(TObject)
 36bubuko.com,布布扣  private
 37bubuko.com,布布扣    FLocation: String;
 38bubuko.com,布布扣  public
 39bubuko.com,布布扣    constructor Create(aLocation: String);
 40bubuko.com,布布扣    procedure Up;
 41bubuko.com,布布扣    procedure Down;
 42bubuko.com,布布扣    procedure Stop;
 43bubuko.com,布布扣    procedure LightOn;
 44bubuko.com,布布扣    procedure LightOff;
 45bubuko.com,布布扣  end;
 46bubuko.com,布布扣
 47bubuko.com,布布扣  TStereo = class(TObject)
 48bubuko.com,布布扣  private
 49bubuko.com,布布扣    FLocation: String;
 50bubuko.com,布布扣  public
 51bubuko.com,布布扣    constructor Create(aLocation: String);
 52bubuko.com,布布扣    procedure Play;
 53bubuko.com,布布扣    procedure Off;
 54bubuko.com,布布扣    procedure SetCD;
 55bubuko.com,布布扣    procedure SetDVD;
 56bubuko.com,布布扣    procedure SetRadio;
 57bubuko.com,布布扣    procedure SetVolume(aVolume: Integer);
 58bubuko.com,布布扣  end;
 59bubuko.com,布布扣
 60bubuko.com,布布扣  TTV = class(TObject)
 61bubuko.com,布布扣  private
 62bubuko.com,布布扣    FLocation: String;
 63bubuko.com,布布扣    FChannel : Integer;
 64bubuko.com,布布扣  public
 65bubuko.com,布布扣    constructor Create(aLocation: String);
 66bubuko.com,布布扣    procedure Open;
 67bubuko.com,布布扣    procedure Off;
 68bubuko.com,布布扣    procedure SetInputChannel;
 69bubuko.com,布布扣  end;
 70bubuko.com,布布扣
 71bubuko.com,布布扣  THottub = class(TObject)
 72bubuko.com,布布扣  private
 73bubuko.com,布布扣    FOpen: Boolean;
 74bubuko.com,布布扣    FTemp: Integer;
 75bubuko.com,布布扣    function  GetTemp: Integer;
 76bubuko.com,布布扣    procedure SetTemp(const Value: Integer);
 77bubuko.com,布布扣  public
 78bubuko.com,布布扣    function  Open: Boolean;
 79bubuko.com,布布扣    function  Off : Boolean;
 80bubuko.com,布布扣    procedure BubblesOpen;
 81bubuko.com,布布扣    procedure BubblesOff;
 82bubuko.com,布布扣    procedure JetsOpen;
 83bubuko.com,布布扣    procedure JetsOff;
 84bubuko.com,布布扣    procedure Heat;
 85bubuko.com,布布扣    procedure Cool;
 86bubuko.com,布布扣    property  Temp: Integer read GetTemp write SetTemp;
 87bubuko.com,布布扣  end;
 88bubuko.com,布布扣  
 89bubuko.com,布布扣implementation
 90bubuko.com,布布扣
 91bubuko.com,布布扣const
 92bubuko.com,布布扣  SPEED_HIGH   = 2;
 93bubuko.com,布布扣  SPEED_MEDIUM = 1;
 94bubuko.com,布布扣  SPEED_LOW    = 0;
 95bubuko.com,布布扣
 96bubuko.com,布布扣{ TLight }
 97bubuko.com,布布扣
 98bubuko.com,布布扣constructor TLight.Create(aLocation: String);
 99bubuko.com,布布扣begin
100bubuko.com,布布扣  FLocation := aLocation;
101bubuko.com,布布扣end;
102bubuko.com,布布扣
103bubuko.com,布布扣procedure TLight.Off;
104bubuko.com,布布扣begin
105bubuko.com,布布扣  Writeln(FLocation + ‘Light is off.‘);
106bubuko.com,布布扣end;
107bubuko.com,布布扣
108bubuko.com,布布扣procedure TLight.Open;
109bubuko.com,布布扣begin
110bubuko.com,布布扣  Writeln(FLocation + ‘Light is on.‘);
111bubuko.com,布布扣end;
112bubuko.com,布布扣
113bubuko.com,布布扣{ TCeilingFan }
114bubuko.com,布布扣
115bubuko.com,布布扣constructor TCeilingFan.Create(aLocation: String);
116bubuko.com,布布扣begin
117bubuko.com,布布扣  FLocation := aLocation;
118bubuko.com,布布扣end;
119bubuko.com,布布扣
120bubuko.com,布布扣function TCeilingFan.GetSpeed: Integer;
121bubuko.com,布布扣begin
122bubuko.com,布布扣  Result := FLevel;
123bubuko.com,布布扣end;
124bubuko.com,布布扣
125bubuko.com,布布扣procedure TCeilingFan.High;
126bubuko.com,布布扣begin
127bubuko.com,布布扣  FLevel := SPEED_HIGH;
128bubuko.com,布布扣  Writeln(FLocation + ‘Ceiling fan is on high.‘);
129bubuko.com,布布扣end;
130bubuko.com,布布扣
131bubuko.com,布布扣procedure TCeilingFan.Low;
132bubuko.com,布布扣begin
133bubuko.com,布布扣  FLevel := SPEED_LOW;
134bubuko.com,布布扣  Writeln(FLocation + ‘Ceiling fan is on low.‘);
135bubuko.com,布布扣end;
136bubuko.com,布布扣
137bubuko.com,布布扣procedure TCeilingFan.Medium;
138bubuko.com,布布扣begin
139bubuko.com,布布扣  FLevel := SPEED_MEDIUM;
140bubuko.com,布布扣  Writeln(FLocation + ‘Ceiling fan is on medium.‘);
141bubuko.com,布布扣end;
142bubuko.com,布布扣
143bubuko.com,布布扣procedure TCeilingFan.Off;
144bubuko.com,布布扣begin
145bubuko.com,布布扣  FLevel := 0;
146bubuko.com,布布扣  Writeln(FLocation + ‘Ceiling fan is on off.‘);
147bubuko.com,布布扣end;
148bubuko.com,布布扣
149bubuko.com,布布扣{ TGarageDoor }
150bubuko.com,布布扣
151bubuko.com,布布扣constructor TGarageDoor.Create(aLocation: String);
152bubuko.com,布布扣begin
153bubuko.com,布布扣  FLocation := aLocation;
154bubuko.com,布布扣end;
155bubuko.com,布布扣
156bubuko.com,布布扣procedure TGarageDoor.Down;
157bubuko.com,布布扣begin
158bubuko.com,布布扣  Writeln(FLocation + ‘Garage door is down.‘);
159bubuko.com,布布扣end;
160bubuko.com,布布扣
161bubuko.com,布布扣procedure TGarageDoor.LightOff;
162bubuko.com,布布扣begin
163bubuko.com,布布扣  Writeln(FLocation + ‘Garage light is off.‘);
164bubuko.com,布布扣end;
165bubuko.com,布布扣
166bubuko.com,布布扣procedure TGarageDoor.LightOn;
167bubuko.com,布布扣begin
168bubuko.com,布布扣  Writeln(FLocation + ‘Garage light is on.‘);
169bubuko.com,布布扣end;
170bubuko.com,布布扣
171bubuko.com,布布扣procedure TGarageDoor.Stop;
172bubuko.com,布布扣begin
173bubuko.com,布布扣  Writeln(FLocation + ‘Garage door is stopped.‘);
174bubuko.com,布布扣end;
175bubuko.com,布布扣
176bubuko.com,布布扣procedure TGarageDoor.Up;
177bubuko.com,布布扣begin
178bubuko.com,布布扣  Writeln(FLocation + ‘Garage door is up.‘);
179bubuko.com,布布扣end;
180bubuko.com,布布扣
181bubuko.com,布布扣{ TStereo }
182bubuko.com,布布扣
183bubuko.com,布布扣constructor TStereo.Create(aLocation: String);
184bubuko.com,布布扣begin
185bubuko.com,布布扣  FLocation := aLocation;
186bubuko.com,布布扣end;
187bubuko.com,布布扣
188bubuko.com,布布扣procedure TStereo.Off;
189bubuko.com,布布扣begin
190bubuko.com,布布扣  Writeln(FLocation + ‘Stereo is off.‘);
191bubuko.com,布布扣end;
192bubuko.com,布布扣
193bubuko.com,布布扣procedure TStereo.Play;
194bubuko.com,布布扣begin
195bubuko.com,布布扣  Writeln(FLocation + ‘Stereo is on.‘);
196bubuko.com,布布扣end;
197bubuko.com,布布扣
198bubuko.com,布布扣procedure TStereo.SetCD;
199bubuko.com,布布扣begin
200bubuko.com,布布扣  Writeln(FLocation + ‘Stereo is set for CD input.‘);
201bubuko.com,布布扣end;
202bubuko.com,布布扣
203bubuko.com,布布扣procedure TStereo.SetDVD;
204bubuko.com,布布扣begin
205bubuko.com,布布扣  Writeln(FLocation + ‘Stereo is set for DVD input.‘);
206bubuko.com,布布扣end;
207bubuko.com,布布扣
208bubuko.com,布布扣procedure TStereo.SetRadio;
209bubuko.com,布布扣begin
210bubuko.com,布布扣  Writeln(FLocation + ‘Stereo is set for radio.‘);
211bubuko.com,布布扣end;
212bubuko.com,布布扣
213bubuko.com,布布扣procedure TStereo.SetVolume(aVolume: Integer);
214bubuko.com,布布扣begin
215bubuko.com,布布扣  Writeln(FLocation + ‘Stereo volume set to ‘, aVolume);
216bubuko.com,布布扣end;
217bubuko.com,布布扣
218bubuko.com,布布扣{ TTV }
219bubuko.com,布布扣
220bubuko.com,布布扣constructor TTV.Create(aLocation: String);
221bubuko.com,布布扣begin
222bubuko.com,布布扣  FLocation := aLocation;
223bubuko.com,布布扣end;
224bubuko.com,布布扣
225bubuko.com,布布扣procedure TTV.Off;
226bubuko.com,布布扣begin
227bubuko.com,布布扣  Writeln(FLocation + ‘TV is off.‘);
228bubuko.com,布布扣end;
229bubuko.com,布布扣
230bubuko.com,布布扣procedure TTV.Open;
231bubuko.com,布布扣begin
232bubuko.com,布布扣  Writeln(FLocation + ‘TV is on.‘);
233bubuko.com,布布扣end;
234bubuko.com,布布扣
235bubuko.com,布布扣procedure TTV.SetInputChannel;
236bubuko.com,布布扣begin
237bubuko.com,布布扣  FChannel := 3;
238bubuko.com,布布扣  Writeln(‘Channel is set for VCR.‘);
239bubuko.com,布布扣end;
240bubuko.com,布布扣
241bubuko.com,布布扣{ THottub }
242bubuko.com,布布扣
243bubuko.com,布布扣procedure THottub.BubblesOff;
244bubuko.com,布布扣begin
245bubuko.com,布布扣  if Off then
246bubuko.com,布布扣    Writeln(‘Hottub is not bubbling.‘);
247bubuko.com,布布扣end;
248bubuko.com,布布扣
249bubuko.com,布布扣procedure THottub.BubblesOpen;
250bubuko.com,布布扣begin
251bubuko.com,布布扣  if Open then
252bubuko.com,布布扣    Writeln(‘Hottub is bubbling.‘);
253bubuko.com,布布扣end;
254bubuko.com,布布扣
255bubuko.com,布布扣procedure THottub.Cool;
256bubuko.com,布布扣begin
257bubuko.com,布布扣  FTemp := 98;
258bubuko.com,布布扣  Writeln(‘Hottub is cooling to 98 degrees.‘);
259bubuko.com,布布扣end;
260bubuko.com,布布扣
261bubuko.com,布布扣function THottub.GetTemp: Integer;
262bubuko.com,布布扣begin
263bubuko.com,布布扣  Result := FTemp;
264bubuko.com,布布扣end;
265bubuko.com,布布扣
266bubuko.com,布布扣procedure THottub.Heat;
267bubuko.com,布布扣begin
268bubuko.com,布布扣  FTemp := 105;
269bubuko.com,布布扣  Writeln(‘Hottub is heating to a steaming 105 degrees.‘);
270bubuko.com,布布扣end;
271bubuko.com,布布扣
272bubuko.com,布布扣procedure THottub.JetsOff;
273bubuko.com,布布扣begin
274bubuko.com,布布扣  if Off then
275bubuko.com,布布扣    Writeln(‘Hottub jets are off.‘);
276bubuko.com,布布扣end;
277bubuko.com,布布扣
278bubuko.com,布布扣procedure THottub.JetsOpen;
279bubuko.com,布布扣begin
280bubuko.com,布布扣  if Open then
281bubuko.com,布布扣    Writeln(‘Hottub jets are open.‘);
282bubuko.com,布布扣end;
283bubuko.com,布布扣
284bubuko.com,布布扣function THottub.Off:  Boolean;
285bubuko.com,布布扣begin
286bubuko.com,布布扣  FOpen  := False;
287bubuko.com,布布扣  Result := FOpen;
288bubuko.com,布布扣end;
289bubuko.com,布布扣
290bubuko.com,布布扣function THottub.Open: Boolean;
291bubuko.com,布布扣begin
292bubuko.com,布布扣  FOpen  := True;
293bubuko.com,布布扣  Result := FOpen;
294bubuko.com,布布扣end;
295bubuko.com,布布扣
296bubuko.com,布布扣procedure THottub.SetTemp(const Value: Integer);
297bubuko.com,布布扣begin
298bubuko.com,布布扣  FTemp := Value;
299bubuko.com,布布扣end;
300bubuko.com,布布扣
301bubuko.com,布布扣end.

 

 

bubuko.com,布布扣
  1bubuko.com,布布扣
  2bubuko.com,布布扣{《HeadFirst设计模式》之命令模式     }
  3bubuko.com,布布扣{ 将命令接收者中的动作包装成命令对象 }
  4bubuko.com,布布扣{ 编译工具 :Delphi7.0               }
  5bubuko.com,布布扣{ 联系方式 :guzh-0417@163.com       }
  6bubuko.com,布布扣
  7bubuko.com,布布扣unit uCommandObject;
  8bubuko.com,布布扣
  9bubuko.com,布布扣interface
 10bubuko.com,布布扣
 11bubuko.com,布布扣uses
 12bubuko.com,布布扣  uReceiveObject;
 13bubuko.com,布布扣
 14bubuko.com,布布扣type
 15bubuko.com,布布扣  TCommand = class(TObject)
 16bubuko.com,布布扣  public
 17bubuko.com,布布扣    procedure Execute; virtual; abstract;
 18bubuko.com,布布扣  end;
 19bubuko.com,布布扣
 20bubuko.com,布布扣  TNoCommand = class(TCommand)
 21bubuko.com,布布扣  public
 22bubuko.com,布布扣    procedure Execute; override;
 23bubuko.com,布布扣  end;
 24bubuko.com,布布扣
 25bubuko.com,布布扣  TLightOnCommand = class(TCommand)
 26bubuko.com,布布扣  private
 27bubuko.com,布布扣    FLight: TLight;
 28bubuko.com,布布扣  public
 29bubuko.com,布布扣    constructor Create(aLight: TLight);
 30bubuko.com,布布扣    procedure Execute; override;
 31bubuko.com,布布扣  end;
 32bubuko.com,布布扣
 33bubuko.com,布布扣  TLightOffCommand = class(TCommand)
 34bubuko.com,布布扣  protected
 35bubuko.com,布布扣    FLight: TLight;
 36bubuko.com,布布扣  public
 37bubuko.com,布布扣    constructor Create(aLight: TLight);
 38bubuko.com,布布扣    procedure Execute; override;
 39bubuko.com,布布扣  end;
 40bubuko.com,布布扣
 41bubuko.com,布布扣  TLivingRoomLightOnCommand = class(TLightOnCommand)
 42bubuko.com,布布扣  end;
 43bubuko.com,布布扣
 44bubuko.com,布布扣  TLivingRoomLightOffCommand = class(TLightOffCommand)
 45bubuko.com,布布扣  end;
 46bubuko.com,布布扣
 47bubuko.com,布布扣  TKitchenLightOnCommand = class(TLightOnCommand)
 48bubuko.com,布布扣  end;
 49bubuko.com,布布扣
 50bubuko.com,布布扣  TKitchenLightOffCommand = class(TLightOffCommand)
 51bubuko.com,布布扣  end;
 52bubuko.com,布布扣
 53bubuko.com,布布扣  TCeilingFanOnCommand = class(TCommand)
 54bubuko.com,布布扣  private
 55bubuko.com,布布扣    FCeilingFan: TCeilingFan;
 56bubuko.com,布布扣  public
 57bubuko.com,布布扣    constructor Create(aCeilingFan: TCeilingFan);
 58bubuko.com,布布扣    procedure Execute; override;
 59bubuko.com,布布扣  end;
 60bubuko.com,布布扣
 61bubuko.com,布布扣  TCeilingFanOffCommand = class(TCommand)
 62bubuko.com,布布扣  private
 63bubuko.com,布布扣    FCeilingFan: TCeilingFan;
 64bubuko.com,布布扣  public
 65bubuko.com,布布扣    constructor Create(aCeilingFan: TCeilingFan);
 66bubuko.com,布布扣    procedure Execute; override;
 67bubuko.com,布布扣  end;
 68bubuko.com,布布扣
 69bubuko.com,布布扣  TGarageDoorUpCommand = class(TCommand)
 70bubuko.com,布布扣  private
 71bubuko.com,布布扣    FGarageDoor: TGarageDoor;
 72bubuko.com,布布扣  public
 73bubuko.com,布布扣    constructor Create(aGarageDoor: TGarageDoor);
 74bubuko.com,布布扣    procedure Execute; override;
 75bubuko.com,布布扣  end;
 76bubuko.com,布布扣
 77bubuko.com,布布扣  TGarageDoorDownCommand = class(TCommand)
 78bubuko.com,布布扣  private
 79bubuko.com,布布扣    FGarageDoor: TGarageDoor;
 80bubuko.com,布布扣  public
 81bubuko.com,布布扣    constructor Create(aGarageDoor: TGarageDoor);
 82bubuko.com,布布扣    procedure Execute; override;
 83bubuko.com,布布扣  end;
 84bubuko.com,布布扣
 85bubuko.com,布布扣  TStereoOnWithCDCommand = class(TCommand)
 86bubuko.com,布布扣  private
 87bubuko.com,布布扣    FStereo: TStereo;
 88bubuko.com,布布扣  public
 89bubuko.com,布布扣    constructor Create(aStereo: TStereo);
 90bubuko.com,布布扣    procedure Execute; override;
 91bubuko.com,布布扣  end;
 92bubuko.com,布布扣
 93bubuko.com,布布扣  TStereoOffCommand = class(TCommand)
 94bubuko.com,布布扣  private
 95bubuko.com,布布扣    FStereo: TStereo;
 96bubuko.com,布布扣  public
 97bubuko.com,布布扣    constructor Create(aStereo: TStereo);
 98bubuko.com,布布扣    procedure Execute; override;
 99bubuko.com,布布扣  end;
100bubuko.com,布布扣
101bubuko.com,布布扣  THottubOnCommand = class(TCommand)
102bubuko.com,布布扣  private
103bubuko.com,布布扣    FHottub: THottub;
104bubuko.com,布布扣  public
105bubuko.com,布布扣    constructor Create(aHottub: THottub);
106bubuko.com,布布扣    procedure Execute; override;
107bubuko.com,布布扣  end;
108bubuko.com,布布扣
109bubuko.com,布布扣  THottubOffCommand = class(TCommand)
110bubuko.com,布布扣  private
111bubuko.com,布布扣    FHottub: THottub;
112bubuko.com,布布扣  public
113bubuko.com,布布扣    constructor Create(aHottub: THottub);
114bubuko.com,布布扣    procedure Execute; override;
115bubuko.com,布布扣  end;
116bubuko.com,布布扣
117bubuko.com,布布扣implementation
118bubuko.com,布布扣
119bubuko.com,布布扣{ TNoCommand }
120bubuko.com,布布扣
121bubuko.com,布布扣procedure TNoCommand.Execute;
122bubuko.com,布布扣begin
123bubuko.com,布布扣end;
124bubuko.com,布布扣
125bubuko.com,布布扣{ TLightOnCommand }
126bubuko.com,布布扣
127bubuko.com,布布扣constructor TLightOnCommand.Create(aLight: TLight);
128bubuko.com,布布扣begin
129bubuko.com,布布扣  FLight := aLight;
130bubuko.com,布布扣end;
131bubuko.com,布布扣
132bubuko.com,布布扣procedure TLightOnCommand.Execute;
133bubuko.com,布布扣begin
134bubuko.com,布布扣  FLight.Open;
135bubuko.com,布布扣end;
136bubuko.com,布布扣
137bubuko.com,布布扣{ TLightOffCommand }
138bubuko.com,布布扣
139bubuko.com,布布扣constructor TLightOffCommand.Create(aLight: TLight);
140bubuko.com,布布扣begin
141bubuko.com,布布扣  FLight := aLight;
142bubuko.com,布布扣end;
143bubuko.com,布布扣
144bubuko.com,布布扣procedure TLightOffCommand.Execute;
145bubuko.com,布布扣begin
146bubuko.com,布布扣  FLight.Off;
147bubuko.com,布布扣end;
148bubuko.com,布布扣
149bubuko.com,布布扣
150bubuko.com,布布扣
151bubuko.com,布布扣{ TLivingRoomLightOnCommand }
152bubuko.com,布布扣
153bubuko.com,布布扣{ TLivingRoomLightOffCommand }
154bubuko.com,布布扣
155bubuko.com,布布扣{ TKitchenLightOnCommand }
156bubuko.com,布布扣
157bubuko.com,布布扣{ TKitchenLightOffCommand }
158bubuko.com,布布扣
159bubuko.com,布布扣
160bubuko.com,布布扣
161bubuko.com,布布扣{ TCeilingFanOnCommand }
162bubuko.com,布布扣
163bubuko.com,布布扣constructor TCeilingFanOnCommand.Create(aCeilingFan: TCeilingFan);
164bubuko.com,布布扣begin
165bubuko.com,布布扣  FCeilingFan := aCeilingFan;
166bubuko.com,布布扣end;
167bubuko.com,布布扣
168bubuko.com,布布扣procedure TCeilingFanOnCommand.Execute;
169bubuko.com,布布扣begin
170bubuko.com,布布扣  FCeilingFan.High;
171bubuko.com,布布扣end;
172bubuko.com,布布扣
173bubuko.com,布布扣{ TCeilingFanOffCommand }
174bubuko.com,布布扣
175bubuko.com,布布扣constructor TCeilingFanOffCommand.Create(aCeilingFan: TCeilingFan);
176bubuko.com,布布扣begin
177bubuko.com,布布扣  FCeilingFan := aCeilingFan;
178bubuko.com,布布扣end;
179bubuko.com,布布扣
180bubuko.com,布布扣procedure TCeilingFanOffCommand.Execute;
181bubuko.com,布布扣begin
182bubuko.com,布布扣  FCeilingFan.Off;
183bubuko.com,布布扣end;
184bubuko.com,布布扣
185bubuko.com,布布扣{ TGarageDoorUpCommand }
186bubuko.com,布布扣
187bubuko.com,布布扣constructor TGarageDoorUpCommand.Create(aGarageDoor: TGarageDoor);
188bubuko.com,布布扣begin
189bubuko.com,布布扣  FGarageDoor := aGarageDoor;
190bubuko.com,布布扣end;
191bubuko.com,布布扣
192bubuko.com,布布扣procedure TGarageDoorUpCommand.Execute;
193bubuko.com,布布扣begin
194bubuko.com,布布扣  FGarageDoor.Up;
195bubuko.com,布布扣  FGarageDoor.LightOn;
196bubuko.com,布布扣end;
197bubuko.com,布布扣
198bubuko.com,布布扣{ TGarageDoorDownCommand }
199bubuko.com,布布扣
200bubuko.com,布布扣constructor TGarageDoorDownCommand.Create(aGarageDoor: TGarageDoor);
201bubuko.com,布布扣begin
202bubuko.com,布布扣  FGarageDoor := aGarageDoor;
203bubuko.com,布布扣end;
204bubuko.com,布布扣
205bubuko.com,布布扣procedure TGarageDoorDownCommand.Execute;
206bubuko.com,布布扣begin
207bubuko.com,布布扣  FGarageDoor.Down;
208bubuko.com,布布扣  FGarageDoor.LightOff;
209bubuko.com,布布扣end;
210bubuko.com,布布扣
211bubuko.com,布布扣{ TStereoOnWithCDCommand }
212bubuko.com,布布扣
213bubuko.com,布布扣constructor TStereoOnWithCDCommand.Create(aStereo: TStereo);
214bubuko.com,布布扣begin
215bubuko.com,布布扣  FStereo := aStereo;
216bubuko.com,布布扣end;
217bubuko.com,布布扣
218bubuko.com,布布扣procedure TStereoOnWithCDCommand.Execute;
219bubuko.com,布布扣begin
220bubuko.com,布布扣  FStereo.Play;
221bubuko.com,布布扣  FStereo.SetCD;
222bubuko.com,布布扣  FStereo.SetVolume(11);
223bubuko.com,布布扣end;
224bubuko.com,布布扣
225bubuko.com,布布扣{ TStereoOffCommand }
226bubuko.com,布布扣
227bubuko.com,布布扣constructor TStereoOffCommand.Create(aStereo: TStereo);
228bubuko.com,布布扣begin
229bubuko.com,布布扣  FStereo := aStereo;
230bubuko.com,布布扣end;
231bubuko.com,布布扣
232bubuko.com,布布扣procedure TStereoOffCommand.Execute;
233bubuko.com,布布扣begin
234bubuko.com,布布扣  FStereo.Off;
235bubuko.com,布布扣end;
236bubuko.com,布布扣
237bubuko.com,布布扣{ THottubOnCommand }
238bubuko.com,布布扣
239bubuko.com,布布扣constructor THottubOnCommand.Create(aHottub: Thottub);
240bubuko.com,布布扣begin
241bubuko.com,布布扣  FHottub := aHottub;
242bubuko.com,布布扣end;
243bubuko.com,布布扣
244bubuko.com,布布扣procedure THottubOnCommand.Execute;
245bubuko.com,布布扣begin
246bubuko.com,布布扣  FHottub.Open;
247bubuko.com,布布扣  FHottub.Heat;
248bubuko.com,布布扣  FHottub.BubblesOpen;
249bubuko.com,布布扣  FHottub.JetsOpen;
250bubuko.com,布布扣end;
251bubuko.com,布布扣
252bubuko.com,布布扣{ THottubOffCommand }
253bubuko.com,布布扣
254bubuko.com,布布扣constructor THottubOffCommand.Create(aHottub: THottub);
255bubuko.com,布布扣begin
256bubuko.com,布布扣  FHottub := aHottub;
257bubuko.com,布布扣end;
258bubuko.com,布布扣
259bubuko.com,布布扣procedure THottubOffCommand.Execute;
260bubuko.com,布布扣begin
261bubuko.com,布布扣  FHottub.Cool;
262bubuko.com,布布扣  FHottub.Off;
263bubuko.com,布布扣end;
264bubuko.com,布布扣
265bubuko.com,布布扣end.

 

 

bubuko.com,布布扣
 1bubuko.com,布布扣
 2bubuko.com,布布扣{《HeadFirst设计模式》之命令模式                  }
 3bubuko.com,布布扣{ 本单元中的类为命令的请求者,向命令对象发出请求,}
 4bubuko.com,布布扣{ 命令对象通过委托,执行命令接收者中的动作。      }
 5bubuko.com,布布扣{ 编译工具 :Delphi7.0                            }
 6bubuko.com,布布扣{ 联系方式 :guzh-0417@163.com                    }
 7bubuko.com,布布扣
 8bubuko.com,布布扣unit uInvoker;
 9bubuko.com,布布扣
10bubuko.com,布布扣interface
11bubuko.com,布布扣
12bubuko.com,布布扣uses
13bubuko.com,布布扣  uCommandObject;
14bubuko.com,布布扣
15bubuko.com,布布扣type
16bubuko.com,布布扣  TRemoteControl = class(TObject)
17bubuko.com,布布扣  private
18bubuko.com,布布扣    FOnCommands : array of TCommand;
19bubuko.com,布布扣    FOffCommands: array of TCommand;
20bubuko.com,布布扣    FNoCommand  : TCommand;
21bubuko.com,布布扣  public
22bubuko.com,布布扣    constructor Create;
23bubuko.com,布布扣    destructor  Destroy; override;
24bubuko.com,布布扣    procedure SetCommand(aSlot: Integer; aOnCommand, aOffCommand: TCommand);
25bubuko.com,布布扣    procedure OnButtonWasPressed(aSlot: Integer);
26bubuko.com,布布扣    procedure OffButtonWasPressed(aSlot: Integer);
27bubuko.com,布布扣  end;
28bubuko.com,布布扣
29bubuko.com,布布扣implementation
30bubuko.com,布布扣
31bubuko.com,布布扣{ TRemoteControl }
32bubuko.com,布布扣
33bubuko.com,布布扣constructor TRemoteControl.Create;
34bubuko.com,布布扣var
35bubuko.com,布布扣  i: Integer;
36bubuko.com,布布扣begin
37bubuko.com,布布扣  SetLength(FOnCommands,  7);
38bubuko.com,布布扣  SetLength(FOffCommands, 7);
39bubuko.com,布布扣
40bubuko.com,布布扣  FNoCommand := TNoCommand.Create;
41bubuko.com,布布扣  for i := 0 to 6 do
42bubuko.com,布布扣  begin
43bubuko.com,布布扣    FOnCommands [i] := FNoCommand;
44bubuko.com,布布扣    FOffCommands[i] := FNoCommand;
45bubuko.com,布布扣  end;
46bubuko.com,布布扣end;
47bubuko.com,布布扣
48bubuko.com,布布扣destructor TRemoteControl.Destroy;
49bubuko.com,布布扣begin
50bubuko.com,布布扣  FNoCommand.Free;
51bubuko.com,布布扣  inherited;
52bubuko.com,布布扣end;
53bubuko.com,布布扣
54bubuko.com,布布扣procedure TRemoteControl.OffButtonWasPressed(aSlot: Integer);
55bubuko.com,布布扣begin
56bubuko.com,布布扣  FOffCommands[aSlot].Execute;
57bubuko.com,布布扣end;
58bubuko.com,布布扣
59bubuko.com,布布扣procedure TRemoteControl.OnButtonWasPressed(aSlot: Integer);
60bubuko.com,布布扣begin
61bubuko.com,布布扣  FOnCommands [aSlot].Execute;
62bubuko.com,布布扣end;
63bubuko.com,布布扣
64bubuko.com,布布扣procedure TRemoteControl.SetCommand(aSlot: Integer; aOnCommand, aOffCommand: TCommand);
65bubuko.com,布布扣begin
66bubuko.com,布布扣  FOnCommands [aSlot] := aOnCommand;
67bubuko.com,布布扣  FOffCommands[aSlot] := aOffCommand;
68bubuko.com,布布扣end;
69bubuko.com,布布扣
70bubuko.com,布布扣end.

 

 

bubuko.com,布布扣
 1bubuko.com,布布扣
 2bubuko.com,布布扣{《HeadFirst设计模式》之命令模式 }
 3bubuko.com,布布扣{ 客户端负责创建具体的命令对象   }
 4bubuko.com,布布扣{ 编译工具 :Delphi7.0           }
 5bubuko.com,布布扣{ 联系方式 :guzh-0417@163.com   }
 6bubuko.com,布布扣
 7bubuko.com,布布扣program pRemoteControlTest;
 8bubuko.com,布布扣
 9bubuko.com,布布扣{$APPTYPE CONSOLE}
10bubuko.com,布布扣
11bubuko.com,布布扣uses
12bubuko.com,布布扣  uReceiveObject in ‘uReceiveObject.pas‘,
13bubuko.com,布布扣  uCommandObject in ‘uCommandObject.pas‘,
14bubuko.com,布布扣  uInvoker in ‘uInvoker.pas‘;
15bubuko.com,布布扣
16bubuko.com,布布扣var
17bubuko.com,布布扣  RemoteControl  : TRemoteControl;
18bubuko.com,布布扣
19bubuko.com,布布扣  LivingRoomLight: TLight;
20bubuko.com,布布扣  KitchenLight   : TLight;
21bubuko.com,布布扣  CeilingFan     : TCeilingFan;
22bubuko.com,布布扣  GarageDoor     : TGarageDoor;
23bubuko.com,布布扣  Stereo         : TStereo;
24bubuko.com,布布扣
25bubuko.com,布布扣  LivingRoomLightOnCommand : TLightOnCommand;
26bubuko.com,布布扣  LivingRoomLightOffCommand: TLightOffCommand;
27bubuko.com,布布扣  KitchenLightOnCommand    : TLightOnCommand;
28bubuko.com,布布扣  KitchenLightOffCommand   : TLightOffCommand;
29bubuko.com,布布扣
30bubuko.com,布布扣  CeilingFanOnCommand      : TCeilingFanOnCommand;
31bubuko.com,布布扣  CeilingFanOffCommand     : TCeilingFanOffCommand;
32bubuko.com,布布扣
33bubuko.com,布布扣  GarageDoorUpCommand      : TGarageDoorUpCommand;
34bubuko.com,布布扣  GarageDoorDownCommand    : TGarageDoorDownCommand;
35bubuko.com,布布扣
36bubuko.com,布布扣  StereoOnWithCDCommand    : TStereoOnWithCDCommand;
37bubuko.com,布布扣  StereoOffCommand         : TStereoOffCommand;
38bubuko.com,布布扣
39bubuko.com,布布扣begin
40bubuko.com,布布扣  RemoteControl   := TRemoteControl.Create;
41bubuko.com,布布扣
42bubuko.com,布布扣  LivingRoomLight := TLight.Create(‘Living Room‘);
43bubuko.com,布布扣  KitchenLight    := TLight.Create(‘Kitchen‘);
44bubuko.com,布布扣  CeilingFan      := TCeilingFan.Create(‘Living Room ‘);
45bubuko.com,布布扣  GarageDoor      := TGarageDoor.Create(‘‘);;
46bubuko.com,布布扣  Stereo          := TStereo.Create(‘Living Room‘);
47bubuko.com,布布扣
48bubuko.com,布布扣  LivingRoomLightOnCommand  := TLightOnCommand.Create(LivingRoomLight);
49bubuko.com,布布扣  LivingRoomLightOffCommand := TLightOffCommand.Create(LivingRoomLight);
50bubuko.com,布布扣  KitchenLightOnCommand     := TLightOnCommand.Create(KitchenLight);
51bubuko.com,布布扣  KitchenLightOffCommand    := TLightOffCommand.Create(KitchenLight);
52bubuko.com,布布扣
53bubuko.com,布布扣  CeilingFanOnCommand       := TCeilingFanOnCommand.Create(CeilingFan);
54bubuko.com,布布扣  CeilingFanOffCommand      := TCeilingFanOffCommand.Create(CeilingFan);
55bubuko.com,布布扣
56bubuko.com,布布扣  GarageDoorUpCommand       := TGarageDoorUpCommand.Create(GarageDoor);
57bubuko.com,布布扣  GarageDoorDownCommand     := TGarageDoorDownCommand.Create(GarageDoor);
58bubuko.com,布布扣
59bubuko.com,布布扣  StereoOnWithCDCommand     := TStereoOnWithCDCommand.Create(Stereo);
60bubuko.com,布布扣  StereoOffCommand          := TStereoOffCommand.Create(Stereo);
61bubuko.com,布布扣
62bubuko.com,布布扣  RemoteControl.SetCommand(0, LivingRoomLightOnCommand, LivingRoomLightOffCommand);
63bubuko.com,布布扣  RemoteControl.SetCommand(1, KitchenLightOnCommand, KitchenLightOffCommand);
64bubuko.com,布布扣  RemoteControl.SetCommand(2, CeilingFanOnCommand, CeilingFanOffCommand);
65bubuko.com,布布扣  RemoteControl.SetCommand(3, StereoOnWithCDCommand, StereoOffCommand);
66bubuko.com,布布扣  RemoteControl.SetCommand(4, GarageDoorUpCommand, GarageDoorDownCommand);
67bubuko.com,布布扣
68bubuko.com,布布扣  RemoteControl.OnButtonWasPressed (0);
69bubuko.com,布布扣  RemoteControl.OffButtonWasPressed(0);
70bubuko.com,布布扣  RemoteControl.OnButtonWasPressed (1);
71bubuko.com,布布扣  RemoteControl.OffButtonWasPressed(1);
72bubuko.com,布布扣  RemoteControl.OnButtonWasPressed (2);
73bubuko.com,布布扣  RemoteControl.OffButtonWasPressed(2);
74bubuko.com,布布扣  RemoteControl.OnButtonWasPressed (3);
75bubuko.com,布布扣  RemoteControl.OffButtonWasPressed(3);
76bubuko.com,布布扣  RemoteControl.OnButtonWasPressed (4);
77bubuko.com,布布扣  RemoteControl.OffButtonWasPressed(4);
78bubuko.com,布布扣
79bubuko.com,布布扣  RemoteControl.Free;
80bubuko.com,布布扣  LivingRoomLight.Free;
81bubuko.com,布布扣  KitchenLight.Free;
82bubuko.com,布布扣  CeilingFan.Free;
83bubuko.com,布布扣  GarageDoor.Free;
84bubuko.com,布布扣  Stereo.Free;
85bubuko.com,布布扣  LivingRoomLightOnCommand.Free;
86bubuko.com,布布扣  LivingRoomLightOffCommand.Free;
87bubuko.com,布布扣  KitchenLightOnCommand.Free;
88bubuko.com,布布扣  KitchenLightOffCommand.Free;
89bubuko.com,布布扣  CeilingFanOnCommand.Free;
90bubuko.com,布布扣  CeilingFanOffCommand.Free;
91bubuko.com,布布扣  GarageDoorUpCommand.Free;
92bubuko.com,布布扣  GarageDoorDownCommand.Free;
93bubuko.com,布布扣  StereoOnWithCDCommand.Free;
94bubuko.com,布布扣  StereoOffCommand.Free;
95bubuko.com,布布扣
96bubuko.com,布布扣  Readln;
97bubuko.com,布布扣end.

 

运行结果:

bubuko.com,布布扣

 

 
 

Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---命令模式之RemoteControlTest[转]

标签:des   blog   http   io   ar   os   for   sp   div   

原文地址:http://www.cnblogs.com/0x2D-0x22/p/4076163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!