using System;
using System.Numerics;
using System.Security.Cryptography.X509Certificates;
namespace ConsoleApp17
{
class Program
{
static void Main(string[] args)
{
SubSystem1 subsystem1 = new SubSystem1();
SubSystem2 subsystem2 = new SubSystem2();
Facade facade = new Facade(subsystem1, subsystem2);
Client.CleintCode(facade);
}
}
public class Facade
{
protected SubSystem1 _subsystem1;
protected SubSystem2 _subsystem2;
public Facade(SubSystem1 system1, SubSystem2 system2)
{
this._subsystem1 = system1;
this._subsystem2 = system2;
}
public string Operation()
{
string result = "Facade initializeds subsystem:\n";
result += this._subsystem1.operation1();
result += this._subsystem2.operation1();
result += "Facade orders subsystems to perform the action:\n";
result += this._subsystem1.operetionN();
result += this._subsystem2.operationZ();
return result;
}
}
public class SubSystem1
{
public string operation1()
{
return "SubSystem1:Ready!\n";
}
public string operetionN() => "Subsystem1:Go";
}
public class SubSystem2
{
public string operation1() => "SubSystem2:Ready";
public string operationZ() => "SubSystem2:Fire";
}
class Client
{
public static void CleintCode(Facade facade)
{
Console.WriteLine(facade.Operation());
}
}
}