static void Main(string[] args) { // В клиентском коде могут быть уже созданы некоторые объекты // подсистемы. В этом случае может оказаться целесообразным // инициализировать Фасад с этими объектами вместо того, чтобы // позволить Фасаду создавать новые экземпляры. CourierSubsystem subsystem1 = new CourierSubsystem(); PackingSubsystem subsystem2 = new PackingSubsystem(); PayingSubsystem subsystem3 = new PayingSubsystem(); PostOffice facade = new PostOffice(subsystem1, subsystem2, subsystem3); Client.ClientCode(facade); }
// Клиентский код работает со сложными подсистемами через простой // интерфейс, предоставляемый Фасадом. Когда фасад управляет жизненным // циклом подсистемы, клиент может даже не знать о существовании // подсистемы. Такой подход позволяет держать сложность под контролем. public static void ClientCode(PostOffice facade) { Console.Write(facade.SendParcel()); }