main
syneffort 2 years ago
parent 305b348674
commit 4480928225
  1. 9
      DesignPatternGuru/DesignPatternGuru.sln
  2. 16
      DesignPatternGuru/Facade/Client.cs
  3. 10
      DesignPatternGuru/Facade/Facade.csproj
  4. 34
      DesignPatternGuru/Facade/Facades/Facade.cs
  5. 15
      DesignPatternGuru/Facade/Program.cs
  6. 21
      DesignPatternGuru/Facade/Subsystems/Subsystem1.cs
  7. 21
      DesignPatternGuru/Facade/Subsystems/Subsystem2.cs

@ -23,7 +23,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bridge", "Bridge\Bridge.csp
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Composite", "Composite\Composite.csproj", "{8EAAC7FD-ED5E-4567-B1C1-F79AC79C9820}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Decorator", "Decorator\Decorator.csproj", "{8AA3ECFD-4F9A-433D-884C-E76E5050AFBF}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Decorator", "Decorator\Decorator.csproj", "{8AA3ECFD-4F9A-433D-884C-E76E5050AFBF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Facade", "Facade\Facade.csproj", "{7D6D306D-BC44-407A-9A39-104C90A3FA39}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -67,6 +69,10 @@ Global
{8AA3ECFD-4F9A-433D-884C-E76E5050AFBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8AA3ECFD-4F9A-433D-884C-E76E5050AFBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8AA3ECFD-4F9A-433D-884C-E76E5050AFBF}.Release|Any CPU.Build.0 = Release|Any CPU
{7D6D306D-BC44-407A-9A39-104C90A3FA39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D6D306D-BC44-407A-9A39-104C90A3FA39}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D6D306D-BC44-407A-9A39-104C90A3FA39}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D6D306D-BC44-407A-9A39-104C90A3FA39}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -81,6 +87,7 @@ Global
{60D1EE6E-282D-4613-8B1D-DE355768DCBA} = {0B9333EC-FB73-4FEE-B600-9ECCD5A356B1}
{8EAAC7FD-ED5E-4567-B1C1-F79AC79C9820} = {0B9333EC-FB73-4FEE-B600-9ECCD5A356B1}
{8AA3ECFD-4F9A-433D-884C-E76E5050AFBF} = {0B9333EC-FB73-4FEE-B600-9ECCD5A356B1}
{7D6D306D-BC44-407A-9A39-104C90A3FA39} = {0B9333EC-FB73-4FEE-B600-9ECCD5A356B1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3E5A9C6B-2E8A-466E-B5E0-4379902EFFAC}

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Facade
{
internal class Client
{
public static void ClientCode(Facades.Facade facade)
{
Console.WriteLine(facade.Operation());
}
}
}

@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

@ -0,0 +1,34 @@
using Facade.Subsystems;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Facade.Facades
{
internal class Facade
{
protected Subsystem1 _subsystem1;
protected Subsystem2 _subsystem2;
public Facade(Subsystem1 subsystem1, Subsystem2 subsystem2)
{
_subsystem1 = subsystem1;
_subsystem2 = subsystem2;
}
public string Operation()
{
StringBuilder builder = new StringBuilder();
builder.AppendLine("Facade initializes subsystems:");
builder.AppendLine(_subsystem1.Operation1());
builder.AppendLine(_subsystem2.Operation1());
builder.AppendLine("Facade order subsystems to perform the action:");
builder.AppendLine(_subsystem1.OperationN());
builder.AppendLine(_subsystem2.OperationN());
return builder.ToString();
}
}
}

@ -0,0 +1,15 @@
using Facade.Subsystems;
namespace Facade
{
internal class Program
{
static void Main(string[] args)
{
Subsystem1 subsystem1 = new Subsystem1();
Subsystem2 subsystem2 = new Subsystem2();
Facades.Facade facade = new Facades.Facade(subsystem1, subsystem2);
Client.ClientCode(facade);
}
}
}

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Facade.Subsystems
{
internal class Subsystem1
{
public string Operation1()
{
return "Subsystem1: Ready!";
}
public string OperationN()
{
return "Subsystem1: Go!";
}
}
}

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Facade.Subsystems
{
internal class Subsystem2
{
public string Operation1()
{
return "Subsystem2: Get ready!";
}
public string OperationN()
{
return "Subsystem: Fire!";
}
}
}
Loading…
Cancel
Save