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

 unit uSubObject;
unit uSubObject;
 interface
interface
 type
type
 { TAmplifier与TTuner,TCDPlayer,TDVDPlayer相互依赖。            }
  { TAmplifier与TTuner,TCDPlayer,TDVDPlayer相互依赖。            } { 在TTuner等的简单实现时用不到对TAmplifier的引用,               }
  { 在TTuner等的简单实现时用不到对TAmplifier的引用,               } { 但现实生活中就应该让TAmplifier提供服务,所以这里保留了。       }
  { 但现实生活中就应该让TAmplifier提供服务,所以这里保留了。       } { TProjector对TDVDPlayer的引用也是同样道理。                     }
  { TProjector对TDVDPlayer的引用也是同样道理。                     } { 前置TAmplifier也可以,把TAmplifier的声明放在TTuner等声明的后面 }
  { 前置TAmplifier也可以,把TAmplifier的声明放在TTuner等声明的后面 }
 TTuner     = class;
  TTuner     = class; TCDPlayer  = class;
  TCDPlayer  = class; TDVDPlayer = class;
  TDVDPlayer = class;
 TAmplifier = class(TObject)
  TAmplifier = class(TObject) private
  private FTuner: TTuner;
    FTuner: TTuner; FCD : TCDPlayer;
    FCD : TCDPlayer; FDVD: TDVDPlayer;
    FDVD: TDVDPlayer; FDescription: String;
    FDescription: String; public
  public constructor Create(aDescription: String);
    constructor Create(aDescription: String); procedure Open;
    procedure Open; procedure Off;
    procedure Off; procedure SetStereoSound;
    procedure SetStereoSound; procedure SetSurroundSound;
    procedure SetSurroundSound; procedure SetVolume(aLevel: Integer);
    procedure SetVolume(aLevel: Integer); procedure SetTuner (aTuner: TTuner);
    procedure SetTuner (aTuner: TTuner); procedure SetCD (aCD : TCDPlayer);
    procedure SetCD (aCD : TCDPlayer); procedure SetDVD(aDVD: TDVDPlayer);
    procedure SetDVD(aDVD: TDVDPlayer); function ToString: String;
    function ToString: String; end;
  end;
 TTuner = class(TObject)
  TTuner = class(TObject) private
  private FAmplifier: TAmplifier;
    FAmplifier: TAmplifier; FDescription: String;
    FDescription: String; FFrequency: Double;
    FFrequency: Double; public
  public constructor Create(aDescription: String; aAmplifier: TAmplifier);
    constructor Create(aDescription: String; aAmplifier: TAmplifier); procedure Open;
    procedure Open; procedure Off;
    procedure Off; procedure SetAm;
    procedure SetAm; procedure SetFm;
    procedure SetFm; procedure SetFrequency(aFrequency: Double);
    procedure SetFrequency(aFrequency: Double); function ToString: String;
    function ToString: String; end;
  end;
 TCDPlayer = class(TObject)
  TCDPlayer = class(TObject) private
  private FAmplifier: TAmplifier;
    FAmplifier: TAmplifier; FDescription: String;
    FDescription: String; FCurrentTrack: Integer;
    FCurrentTrack: Integer; FTitle: String;
    FTitle: String; public
  public constructor Create(aDescription: String; aAmplifier: TAmplifier);
    constructor Create(aDescription: String; aAmplifier: TAmplifier); procedure Open;
    procedure Open; procedure Off;
    procedure Off; procedure Eject;
    procedure Eject; procedure Play(aTitle: String ); overload;
    procedure Play(aTitle: String ); overload; procedure Play(aTrack: Integer); overload;
    procedure Play(aTrack: Integer); overload; procedure Stop;
    procedure Stop; procedure Pause;
    procedure Pause; function ToString: String;
    function ToString: String; end;
  end;
 TDVDPlayer = class(TObject)
  TDVDPlayer = class(TObject) private
  private FAmplifier: TAmplifier;
    FAmplifier: TAmplifier; FDescription: String;
    FDescription: String; FCurrentTrack: Integer;
    FCurrentTrack: Integer; FMovie: String;
    FMovie: String; public
  public constructor Create(aDescription: String; aAmplifier: TAmplifier);
    constructor Create(aDescription: String; aAmplifier: TAmplifier); procedure Open;
    procedure Open; procedure Off;
    procedure Off; procedure Eject;
    procedure Eject; procedure Play(aMovie: String ); overload;
    procedure Play(aMovie: String ); overload; procedure Play(aTrack: Integer); overload;
    procedure Play(aTrack: Integer); overload; procedure Stop;
    procedure Stop; procedure Pause;
    procedure Pause; procedure SetTwoChannelAudio;
    procedure SetTwoChannelAudio; procedure SetSurroundAudio;
    procedure SetSurroundAudio; function ToString: String;
    function ToString: String; end;
  end;
 TScreen = class(TObject)
  TScreen = class(TObject) private
  private FDescription: String;
    FDescription: String; public
  public constructor Create(aDescription: String);
    constructor Create(aDescription: String); procedure UP;
    procedure UP; procedure Down;
    procedure Down; function ToString: String;
    function ToString: String; end;
  end;
 TPopcornPopper = class(TObject)
  TPopcornPopper = class(TObject) private
  private FDescription: String;
    FDescription: String; public
  public constructor Create(aDescription: String);
    constructor Create(aDescription: String); procedure Open;
    procedure Open; procedure Off;
    procedure Off; procedure Pop;
    procedure Pop; function ToString: String;
    function ToString: String; end;
  end;
 TTheaterLights = class(TObject)
  TTheaterLights = class(TObject) private
  private FDescription: String;
    FDescription: String; public
  public constructor Create(aDescription: String);
    constructor Create(aDescription: String); procedure Open;
    procedure Open; procedure Off;
    procedure Off; procedure Dim(aLevel: Integer);
    procedure Dim(aLevel: Integer); function ToString: String;
    function ToString: String; end;
  end;
 TProjector = class(TObject)
  TProjector = class(TObject) private
  private FDescription: String;
    FDescription: String; FDVD: TDVDPlayer;
    FDVD: TDVDPlayer; public
  public constructor Create(aDescription: String; aDVD: TDVDPlayer);
    constructor Create(aDescription: String; aDVD: TDVDPlayer); procedure Open;
    procedure Open; procedure Off;
    procedure Off; procedure WideScreenMode;
    procedure WideScreenMode; procedure TVMode;
    procedure TVMode; function ToString: String;
    function ToString: String; end;
  end;
 implementation
implementation
 { TAmplifier }
{ TAmplifier }
 constructor TAmplifier.Create(aDescription: String);
constructor TAmplifier.Create(aDescription: String); begin
begin FDescription := aDescription;
  FDescription := aDescription; end;
end;
 procedure TAmplifier.Off;
procedure TAmplifier.Off; begin
begin Writeln(FDescription + ‘ off‘);
  Writeln(FDescription + ‘ off‘); end;
end;
 procedure TAmplifier.Open;
procedure TAmplifier.Open; begin
begin Writeln(FDescription + ‘ on‘);
  Writeln(FDescription + ‘ on‘); end;
end;
 procedure TAmplifier.SetCD(aCD: TCDPlayer);
procedure TAmplifier.SetCD(aCD: TCDPlayer); begin
begin Writeln(FDescription + ‘ setting CD player to ‘ + aCD.ToString);
  Writeln(FDescription + ‘ setting CD player to ‘ + aCD.ToString); FCD := aCD;
  FCD := aCD; end;
end;
 procedure TAmplifier.SetDVD(aDVD: TDVDPlayer);
procedure TAmplifier.SetDVD(aDVD: TDVDPlayer); begin
begin Writeln(FDescription + ‘ setting DVD player to ‘ + aDVD.ToString);
  Writeln(FDescription + ‘ setting DVD player to ‘ + aDVD.ToString); FDVD := aDVD;
  FDVD := aDVD; end;
end;
 procedure TAmplifier.SetStereoSound;
procedure TAmplifier.SetStereoSound; begin
begin Writeln(FDescription + ‘ stereo mode on‘);
  Writeln(FDescription + ‘ stereo mode on‘); end;
end;
 procedure TAmplifier.SetSurroundSound;
procedure TAmplifier.SetSurroundSound; begin
begin Writeln(FDescription + ‘ surround sound on (5 speakers, 1 subwoofer)‘);
  Writeln(FDescription + ‘ surround sound on (5 speakers, 1 subwoofer)‘); end;
end;
 procedure TAmplifier.SetTuner(aTuner: TTuner);
procedure TAmplifier.SetTuner(aTuner: TTuner); begin
begin Writeln(FDescription + ‘ setting Tuner player to ‘, aTuner.ToString);
  Writeln(FDescription + ‘ setting Tuner player to ‘, aTuner.ToString); FTuner := aTuner;
  FTuner := aTuner; end;
end;
 procedure TAmplifier.SetVolume(aLevel: Integer);
procedure TAmplifier.SetVolume(aLevel: Integer); begin
begin Writeln(FDescription +  ‘ setting volume to ‘ , aLevel);
  Writeln(FDescription +  ‘ setting volume to ‘ , aLevel); end;
end;
 function TAmplifier.ToString: String;
function TAmplifier.ToString: String; begin
begin Result := FDescription;
  Result := FDescription; end;
end;
 { TTuner }
{ TTuner }
 constructor TTuner.Create(aDescription: String; aAmplifier: TAmplifier);
constructor TTuner.Create(aDescription: String; aAmplifier: TAmplifier); begin
begin FDescription := aDescription;
  FDescription := aDescription; FAmplifier   := aAmplifier;
  FAmplifier   := aAmplifier; end;
end;
 procedure TTuner.Off;
procedure TTuner.Off; begin
begin Writeln(FDescription + ‘ off‘);
  Writeln(FDescription + ‘ off‘); end;
end;
 procedure TTuner.Open;
procedure TTuner.Open; begin
begin Writeln(FDescription + ‘ on‘);
  Writeln(FDescription + ‘ on‘); end;
end;
 procedure TTuner.SetAm;
procedure TTuner.SetAm; begin
begin Writeln(FDescription + ‘ setting AM mode‘);
  Writeln(FDescription + ‘ setting AM mode‘); end;
end;
 procedure TTuner.SetFm;
procedure TTuner.SetFm; begin
begin Writeln(FDescription + ‘ setting FM mode‘);
  Writeln(FDescription + ‘ setting FM mode‘); end;
end;
 procedure TTuner.SetFrequency(aFrequency: Double);
procedure TTuner.SetFrequency(aFrequency: Double); begin
begin Writeln(FDescription + ‘ setting frequency to ‘, aFrequency);
  Writeln(FDescription + ‘ setting frequency to ‘, aFrequency); FFrequency := aFrequency;
  FFrequency := aFrequency; end;
end;
 function TTuner.ToString: String;
function TTuner.ToString: String; begin
begin Result := FDescription;
  Result := FDescription; end;
end;
 { TCDPlayer }
{ TCDPlayer }
 constructor TCDPlayer.Create(aDescription: String; aAmplifier: TAmplifier);
constructor TCDPlayer.Create(aDescription: String; aAmplifier: TAmplifier); begin
begin FDescription := aDescription;
  FDescription := aDescription; FAmplifier   := aAmplifier;
  FAmplifier   := aAmplifier; end;
end;
 procedure TCDPlayer.Eject;
procedure TCDPlayer.Eject; begin
begin FTitle := ‘‘;
  FTitle := ‘‘; Writeln(FDescription + ‘ eject‘);
  Writeln(FDescription + ‘ eject‘); end;
end;
 procedure TCDPlayer.Off;
procedure TCDPlayer.Off; begin
begin Writeln(FDescription + ‘ off‘);
  Writeln(FDescription + ‘ off‘); end;
end;
 procedure TCDPlayer.Open;
procedure TCDPlayer.Open; begin
begin Writeln(FDescription + ‘ on‘);
  Writeln(FDescription + ‘ on‘); end;
end;
 procedure TCDPlayer.Pause;
procedure TCDPlayer.Pause; begin
begin Writeln(FDescription + ‘ paused <‘ + FTitle + ‘>‘);
  Writeln(FDescription + ‘ paused <‘ + FTitle + ‘>‘); end;
end;
 procedure TCDPlayer.Play(aTitle: String);
procedure TCDPlayer.Play(aTitle: String); begin
begin FTitle := aTitle;
  FTitle := aTitle; FCurrentTrack := 0;
  FCurrentTrack := 0; Writeln(FDescription + ‘ playing <‘ + FTitle + ‘>‘);
  Writeln(FDescription + ‘ playing <‘ + FTitle + ‘>‘); end;
end;
 procedure TCDPlayer.Play(aTrack: Integer);
procedure TCDPlayer.Play(aTrack: Integer); begin
begin if FTitle = ‘‘ then
  if FTitle = ‘‘ then begin
    begin Writeln(FDescription + ‘ can‘‘ t play track ‘, aTrack, ‘, no CD inserted‘);
      Writeln(FDescription + ‘ can‘‘ t play track ‘, aTrack, ‘, no CD inserted‘); end
    end else
  else begin
    begin FCurrentTrack := aTrack;
      FCurrentTrack := aTrack; Writeln(FDescription + ‘ playing track ‘, FCurrentTrack);
      Writeln(FDescription + ‘ playing track ‘, FCurrentTrack); end;
    end; end;
end;
 procedure TCDPlayer.Stop;
procedure TCDPlayer.Stop; begin
begin FCurrentTrack := 0;
  FCurrentTrack := 0; Writeln(FDescription + ‘ stopped‘);
  Writeln(FDescription + ‘ stopped‘); end;
end;
 function TCDPlayer.ToString: String;
function TCDPlayer.ToString: String; begin
begin Result := FDescription;
  Result := FDescription; end;
end;
 { TDVDPlayer }
{ TDVDPlayer }
 constructor TDVDPlayer.Create(aDescription: String; aAmplifier: TAmplifier);
constructor TDVDPlayer.Create(aDescription: String; aAmplifier: TAmplifier); begin
begin FDescription := aDescription;
  FDescription := aDescription; FAmplifier   := aAmplifier;
  FAmplifier   := aAmplifier; end;
end;
 procedure TDVDPlayer.Eject;
procedure TDVDPlayer.Eject; begin
begin Writeln(FDescription + ‘ eject‘);
  Writeln(FDescription + ‘ eject‘); end;
end;
 procedure TDVDPlayer.Off;
procedure TDVDPlayer.Off; begin
begin Writeln(FDescription + ‘ off‘);
  Writeln(FDescription + ‘ off‘); end;
end;
 procedure TDVDPlayer.Open;
procedure TDVDPlayer.Open; begin
begin Writeln(FDescription + ‘ on‘);
  Writeln(FDescription + ‘ on‘); end;
end;
 procedure TDVDPlayer.Pause;
procedure TDVDPlayer.Pause; begin
begin Writeln(FDescription + ‘ paused <‘ + FMovie + ‘>‘);
  Writeln(FDescription + ‘ paused <‘ + FMovie + ‘>‘); end;
end;
 procedure TDVDPlayer.Play(aTrack: Integer);
procedure TDVDPlayer.Play(aTrack: Integer); begin
begin if FMovie = ‘‘ then
  if FMovie = ‘‘ then begin
    begin Writeln(FDescription + ‘ can‘‘ t play track ‘, aTrack, ‘, no DVD inserted‘);
      Writeln(FDescription + ‘ can‘‘ t play track ‘, aTrack, ‘, no DVD inserted‘); end
    end else
  else begin
    begin FCurrentTrack := aTrack;
      FCurrentTrack := aTrack; Writeln(FDescription + ‘ playing track ‘, FCurrentTrack, ‘ of <‘, FMovie, ‘>‘);
      Writeln(FDescription + ‘ playing track ‘, FCurrentTrack, ‘ of <‘, FMovie, ‘>‘); end;
    end; end;
end;
 procedure TDVDPlayer.Play(aMovie: String);
procedure TDVDPlayer.Play(aMovie: String); begin
begin FMovie := aMovie;
  FMovie := aMovie; FCurrentTrack := 0;
  FCurrentTrack := 0; Writeln(FDescription + ‘ playing <‘ + FMovie + ‘>‘);
  Writeln(FDescription + ‘ playing <‘ + FMovie + ‘>‘); end;
end;
 procedure TDVDPlayer.SetSurroundAudio;
procedure TDVDPlayer.SetSurroundAudio; begin
begin Writeln(FDescription + ‘ set surround audio‘);
  Writeln(FDescription + ‘ set surround audio‘); end;
end;
 procedure TDVDPlayer.SetTwoChannelAudio;
procedure TDVDPlayer.SetTwoChannelAudio; begin
begin Writeln(FDescription + ‘ set two channel audio‘);
  Writeln(FDescription + ‘ set two channel audio‘); end;
end;
 procedure TDVDPlayer.Stop;
procedure TDVDPlayer.Stop; begin
begin FCurrentTrack := 0;
  FCurrentTrack := 0; Writeln(FDescription + ‘ <‘ + FMovie + ‘> stopped‘);
  Writeln(FDescription + ‘ <‘ + FMovie + ‘> stopped‘); end;
end;
 function TDVDPlayer.ToString: String;
function TDVDPlayer.ToString: String; begin
begin Result := FDescription;
  Result := FDescription; end;
end;
 { TScreen }
{ TScreen }
 constructor TScreen.Create(aDescription: String);
constructor TScreen.Create(aDescription: String); begin
begin FDescription := aDescription;
  FDescription := aDescription; end;
end;
 procedure TScreen.Down;
procedure TScreen.Down; begin
begin Writeln(FDescription, ‘ going down‘);
  Writeln(FDescription, ‘ going down‘); end;
end;
 function TScreen.ToString: String;
function TScreen.ToString: String; begin
begin Result := FDescription;
  Result := FDescription; end;
end;
 procedure TScreen.UP;
procedure TScreen.UP; begin
begin Writeln(FDescription, ‘ going up‘);
  Writeln(FDescription, ‘ going up‘); end;
end;
 { TPopcornPopper }
{ TPopcornPopper }
 constructor TPopcornPopper.Create(aDescription: String);
constructor TPopcornPopper.Create(aDescription: String); begin
begin FDescription := aDescription;
  FDescription := aDescription; end;
end;
 procedure TPopcornPopper.Off;
procedure TPopcornPopper.Off; begin
begin Writeln(FDescription, ‘ off‘);
  Writeln(FDescription, ‘ off‘); end;
end;
 procedure TPopcornPopper.Open;
procedure TPopcornPopper.Open; begin
begin Writeln(FDescription, ‘ on‘);
  Writeln(FDescription, ‘ on‘); end;
end;
 procedure TPopcornPopper.Pop;
procedure TPopcornPopper.Pop; begin
begin Writeln(FDescription, ‘ popping popcorn!‘);
  Writeln(FDescription, ‘ popping popcorn!‘); end;
end;
 function TPopcornPopper.ToString: String;
function TPopcornPopper.ToString: String; begin
begin Result := FDescription;
  Result := FDescription; end;
end;
 { TTheaterLights }
{ TTheaterLights }
 constructor TTheaterLights.Create(aDescription: String);
constructor TTheaterLights.Create(aDescription: String); begin
begin FDescription := aDescription;
  FDescription := aDescription; end;
end;
 procedure TTheaterLights.Dim(aLevel: Integer);
procedure TTheaterLights.Dim(aLevel: Integer); begin
begin Writeln(FDescription, ‘ dimming to ‘, aLevel, ‘%‘);
  Writeln(FDescription, ‘ dimming to ‘, aLevel, ‘%‘); end;
end;
 procedure TTheaterLights.Off;
procedure TTheaterLights.Off; begin
begin Writeln(FDescription, ‘ off‘);
  Writeln(FDescription, ‘ off‘); end;
end;
 procedure TTheaterLights.Open;
procedure TTheaterLights.Open; begin
begin Writeln(FDescription, ‘ on‘);
  Writeln(FDescription, ‘ on‘); end;
end;
 function TTheaterLights.ToString: String;
function TTheaterLights.ToString: String; begin
begin Result := FDescription;
  Result := FDescription; end;
end;
 { TProjector }
{ TProjector }
 constructor TProjector.Create(aDescription: String; aDVD: TDVDPlayer);
constructor TProjector.Create(aDescription: String; aDVD: TDVDPlayer); begin
begin FDescription := aDescription;
  FDescription := aDescription; FDVD := aDVD;
  FDVD := aDVD; end;
end;
 procedure TProjector.Off;
procedure TProjector.Off; begin
begin Writeln(FDescription, ‘ off‘);
  Writeln(FDescription, ‘ off‘); end;
end;
 procedure TProjector.Open;
procedure TProjector.Open; begin
begin Writeln(FDescription, ‘ on‘);
  Writeln(FDescription, ‘ on‘); end;
end;
 function TProjector.ToString: String;
function TProjector.ToString: String; begin
begin Result := FDescription;
  Result := FDescription; end;
end;
 procedure TProjector.TVMode;
procedure TProjector.TVMode; begin
begin Writeln(FDescription + ‘ in tv mode (4x3 aspect ratio)‘);
  Writeln(FDescription + ‘ in tv mode (4x3 aspect ratio)‘); end;
end;
 procedure TProjector.WideScreenMode;
procedure TProjector.WideScreenMode; begin
begin Writeln(FDescription + ‘ in widescreen mode (16x9 aspect ratio)‘);
  Writeln(FDescription + ‘ in widescreen mode (16x9 aspect ratio)‘); end;
end;
 end.
end.

 unit uFacadeObject;
unit uFacadeObject;
 interface
interface
 uses
uses uSubObject;
  uSubObject;
 type
type THomeTheaterFacade = class(TObject)
  THomeTheaterFacade = class(TObject) private
  private FAmp: TAmplifier;
    FAmp: TAmplifier; FTuner: TTuner;
    FTuner: TTuner; FDVD: TDVDPlayer;
    FDVD: TDVDPlayer; FCD: TCDPlayer;
    FCD: TCDPlayer; FProjector: TProjector;
    FProjector: TProjector; FLights: TTheaterLights;
    FLights: TTheaterLights; FScreen: TScreen;
    FScreen: TScreen; FPopper: TPopcornPopper;
    FPopper: TPopcornPopper; public
  public constructor Create(aAmp   : TAmplifier;
    constructor Create(aAmp   : TAmplifier; aTuner : TTuner;
                       aTuner : TTuner; aDVD   : TDVDPlayer;
                       aDVD   : TDVDPlayer; aCD    : TCDPlayer;
                       aCD    : TCDPlayer; aProjector: TProjector;
                       aProjector: TProjector; aLights: TTheaterLights;
                       aLights: TTheaterLights; aScreen: TScreen;
                       aScreen: TScreen; aPopper: TPopcornPopper);
                       aPopper: TPopcornPopper); procedure WatchMovie(aMovie: String);
    procedure WatchMovie(aMovie: String); procedure EndMovie;
    procedure EndMovie; procedure ListenToCD(CDTitle: String);
    procedure ListenToCD(CDTitle: String); procedure EndCD;
    procedure EndCD; procedure ListenToRadio(aFrequency: Double);
    procedure ListenToRadio(aFrequency: Double); procedure EndRadio;
    procedure EndRadio; end;
  end;
 implementation
implementation
 { THomeTheaterFacade }
{ THomeTheaterFacade }
 constructor THomeTheaterFacade.Create(aAmp   : TAmplifier;
constructor THomeTheaterFacade.Create(aAmp   : TAmplifier; aTuner : TTuner;
                                      aTuner : TTuner; aDVD   : TDVDPlayer;
                                      aDVD   : TDVDPlayer; aCD    : TCDPlayer;
                                      aCD    : TCDPlayer; aProjector: TProjector;
                                      aProjector: TProjector; aLights: TTheaterLights;
                                      aLights: TTheaterLights; aScreen: TScreen;
                                      aScreen: TScreen; aPopper: TPopcornPopper);
                                      aPopper: TPopcornPopper); begin
begin FAmp    := aAmp;
  FAmp    := aAmp; FTuner  := aTuner;
  FTuner  := aTuner; FDVD    := aDVD;
  FDVD    := aDVD; FCD     := aCD;
  FCD     := aCD; FProjector := aProjector;
  FProjector := aProjector; FLights := aLights;
  FLights := aLights; FScreen := aScreen;
  FScreen := aScreen; FPopper := aPopper;
  FPopper := aPopper; end;
end;
 procedure THomeTheaterFacade.EndCD;
procedure THomeTheaterFacade.EndCD; begin
begin Writeln(‘Shutting down CD
  Writeln(‘Shutting down CD ‘);
‘); FAmp.Off;
  FAmp.Off; FAmp.SetCD(FCD);
  FAmp.SetCD(FCD); FCD.Eject;
  FCD.Eject; FCD.Off;
  FCD.Off; end;
end;
 procedure THomeTheaterFacade.EndMovie;
procedure THomeTheaterFacade.EndMovie; begin
begin Writeln(‘Shutting movie theater down
  Writeln(‘Shutting movie theater down ‘);
‘); FPopper.Off;
  FPopper.Off; FLights.Open;
  FLights.Open; FScreen.UP;
  FScreen.UP; FProjector.Off;
  FProjector.Off; FAmp.Off;
  FAmp.Off; FDVD.Stop;
  FDVD.Stop; FDVD.Eject;
  FDVD.Eject; FDVD.Off;
  FDVD.Off; end;
end;
 procedure THomeTheaterFacade.EndRadio;
procedure THomeTheaterFacade.EndRadio; begin
begin Writeln(‘Shutting down the tuner
  Writeln(‘Shutting down the tuner ‘);
‘); FTuner.Off;
  FTuner.Off; FAmp.Off;
  FAmp.Off; end;
end;
 procedure THomeTheaterFacade.ListenToCD(CDTitle: String);
procedure THomeTheaterFacade.ListenToCD(CDTitle: String); begin
begin Writeln(‘Get ready for an audiopile experence
  Writeln(‘Get ready for an audiopile experence ‘);
‘); FLights.Open;
  FLights.Open; FAmp.Open;
  FAmp.Open; FAmp.SetVolume(5);
  FAmp.SetVolume(5); FAmp.SetCD(FCD);
  FAmp.SetCD(FCD); FAmp.SetStereoSound;
  FAmp.SetStereoSound; FCD.Open;
  FCD.Open; FCD.Play(CDTitle);
  FCD.Play(CDTitle); end;
end;
 procedure THomeTheaterFacade.ListenToRadio(aFrequency: Double);
procedure THomeTheaterFacade.ListenToRadio(aFrequency: Double); begin
begin Writeln(‘Tuning in the airwaves
  Writeln(‘Tuning in the airwaves ‘);
‘); FTuner.Open;
  FTuner.Open; FTuner.SetFrequency(aFrequency);
  FTuner.SetFrequency(aFrequency); FAmp.Open;
  FAmp.Open; FAmp.SetVolume(5);
  FAmp.SetVolume(5); FAmp.SetTuner(FTuner);
  FAmp.SetTuner(FTuner); end;
end;
 procedure THomeTheaterFacade.WatchMovie(aMovie: String);
procedure THomeTheaterFacade.WatchMovie(aMovie: String); begin
begin Writeln(‘Get ready to watch a movie
  Writeln(‘Get ready to watch a movie ‘);
‘); FPopper.Open;
  FPopper.Open; FPopper.Pop;
  FPopper.Pop; FLights.Dim(10);
  FLights.Dim(10); FScreen.Down;
  FScreen.Down; FProjector.Open;
  FProjector.Open; FProjector.WideScreenMode;
  FProjector.WideScreenMode; FAmp.Open;
  FAmp.Open; FAmp.SetDVD(FDVD);
  FAmp.SetDVD(FDVD); FAmp.SetSurroundSound;
  FAmp.SetSurroundSound; FAmp.SetVolume(5);
  FAmp.SetVolume(5); FDVD.Open;
  FDVD.Open; FDVD.Play(aMovie);
  FDVD.Play(aMovie); end;
end;
 end.
end.

 program pHomeTheaterTestDrive;
program pHomeTheaterTestDrive;
 {$APPTYPE CONSOLE}
{$APPTYPE CONSOLE}
 uses
uses SysUtils,
  SysUtils, uFacadeObject in ‘uFacadeObject.pas‘,
  uFacadeObject in ‘uFacadeObject.pas‘, uSubObject in ‘uSubObject.pas‘;
  uSubObject in ‘uSubObject.pas‘;
 var
var Amp   : TAmplifier;
  Amp   : TAmplifier; Tuner : TTuner;
  Tuner : TTuner; DVD   : TDVDPlayer;
  DVD   : TDVDPlayer; CD    : TCDPlayer;
  CD    : TCDPlayer; Projector: TProjector;
  Projector: TProjector; Lights: TTheaterLights;
  Lights: TTheaterLights; Screen: TScreen;
  Screen: TScreen; Popper: TPopcornPopper;
  Popper: TPopcornPopper;
 HomeTheater: THomeTheaterFacade;
  HomeTheater: THomeTheaterFacade; 
    begin
begin Amp    := TAmplifier.Create(‘Top-O-Line Amplifier‘);
  Amp    := TAmplifier.Create(‘Top-O-Line Amplifier‘); Tuner  := TTuner.Create(‘Top-O-Line AM/FM Tuner‘, Amp);
  Tuner  := TTuner.Create(‘Top-O-Line AM/FM Tuner‘, Amp); DVD    := TDVDPlayer.Create(‘Top-O-Line DVD Player‘, Amp);
  DVD    := TDVDPlayer.Create(‘Top-O-Line DVD Player‘, Amp); CD     := TCDPlayer.Create(‘Top-O-Line CD Player‘, Amp);
  CD     := TCDPlayer.Create(‘Top-O-Line CD Player‘, Amp); Projector := TProjector.Create(‘Top-O-Line Projector‘, DVD);
  Projector := TProjector.Create(‘Top-O-Line Projector‘, DVD); Lights := TTheaterLights.Create(‘Theater Ceiling Lights‘);
  Lights := TTheaterLights.Create(‘Theater Ceiling Lights‘); Screen := TScreen.Create(‘Theater Screen‘);
  Screen := TScreen.Create(‘Theater Screen‘); Popper := TPopcornPopper.Create(‘Popcorn Popper‘);
  Popper := TPopcornPopper.Create(‘Popcorn Popper‘);
 HomeTheater := THomeTheaterFacade.Create(Amp, Tuner, DVD, CD, Projector,
  HomeTheater := THomeTheaterFacade.Create(Amp, Tuner, DVD, CD, Projector, Lights, Screen, Popper);
                                           Lights, Screen, Popper);
 HomeTheater.WatchMovie(‘Raiders of the Lost Ark‘);
  HomeTheater.WatchMovie(‘Raiders of the Lost Ark‘); Writeln;
  Writeln; HomeTheater.EndMovie;
  HomeTheater.EndMovie;
 FreeAndNil(Amp);
  FreeAndNil(Amp); FreeAndNil(Tuner);
  FreeAndNil(Tuner); FreeAndNil(DVD);
  FreeAndNil(DVD); FreeAndNil(CD);
  FreeAndNil(CD); FreeAndNil(Projector);
  FreeAndNil(Projector); FreeAndNil(Lights);
  FreeAndNil(Lights); FreeAndNil(Screen);
  FreeAndNil(Screen); FreeAndNil(Popper);
  FreeAndNil(Popper); FreeAndNil(HomeTheater);
  FreeAndNil(HomeTheater);
 Readln;
  Readln; end.
end.
运行结果:

Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---门面模式之HomeTheater[转]
标签:des blog http io ar os for sp div
原文地址:http://www.cnblogs.com/0x2D-0x22/p/4076270.html