понедельник, 16 апреля 2012 г.

Фасад

Позволяет скрыть сложность системы путем сведения всех возможных внешних вызовов к одному объекту, делегирующему их соответствующим объектам системы. Шаблон применяется для установки некоторого рода политики по отношению к другой группе объектов. Если политика должна быть яркой и заметной. Если же необходимо обеспечить скрытность и аккуратность, более подходящим выбором является шаблон Заместитель (Proxy).
program Facade;
type
  TComputer = class
  public
    procedure PlugIn;
    procedure PowerMonitor;
    procedure Power;
  end;

  TNotebook = class
    procedure Power;
  end;

  TKettle = class
    procedure PlugIn;
    procedure Power;
  end;

  TFacade = class
  public
    procedure PowerOn(aDevice: TObject);
  end;

procedure TFacade.PowerOn(aDevice: TObject);
begin
  if aDevice is TComputer then
    with TComputer(aDevice) do
    begin
      PlugIn;
      PowerMonitor;
      Power;
    end;

  if aDevice is TNotebook then
    with TNotebook(aDevice) do
      Power;

  if aDevice is TKettle then
    with TKettle(aDevice) do
    begin
      PlugIn;
      Power;
    end;
end;

begin
  with TFacade.Create do
  try
    PowerOn(TComputer.Create);
    PowerOn(TNotebook.Create);
    PowerOn(TKettle.Create);
  finally
    Free;
end.

Комментариев нет:

Отправить комментарий