Add code examples, and documentation
This commit is contained in:
14
patterns/facade/CarEngineFacade/AirFlowController.cs
Normal file
14
patterns/facade/CarEngineFacade/AirFlowController.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace CarEngineFacade;
|
||||
|
||||
public class AirFlowController
|
||||
{
|
||||
public void TakeAir()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Off()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
}
|
||||
8
patterns/facade/CarEngineFacade/CarEngineFacade.csproj
Normal file
8
patterns/facade/CarEngineFacade/CarEngineFacade.csproj
Normal file
@@ -0,0 +1,8 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<RootNamespace>CarEngineFacade</RootNamespace>
|
||||
<AssemblyName>CarEngineFacade</AssemblyName>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
14
patterns/facade/CarEngineFacade/CatalyticConverter.cs
Normal file
14
patterns/facade/CarEngineFacade/CatalyticConverter.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace CarEngineFacade;
|
||||
|
||||
public class CatalyticConverter
|
||||
{
|
||||
public void On()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Off()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
}
|
||||
19
patterns/facade/CarEngineFacade/CoolingController.cs
Normal file
19
patterns/facade/CarEngineFacade/CoolingController.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
namespace CarEngineFacade;
|
||||
|
||||
public class CoolingController
|
||||
{
|
||||
public void Run()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Cool()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
}
|
||||
29
patterns/facade/CarEngineFacade/Facade.cs
Normal file
29
patterns/facade/CarEngineFacade/Facade.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
namespace CarEngineFacade;
|
||||
|
||||
public class Facade
|
||||
{
|
||||
private readonly AirFlowController _air = new();
|
||||
private readonly CatalyticConverter _cat = new();
|
||||
private readonly CoolingController _cool = new();
|
||||
private readonly FuelInjector _fuel = new();
|
||||
private readonly Starter _start = new();
|
||||
|
||||
public void Start()
|
||||
{
|
||||
_air.TakeAir();
|
||||
_fuel.On();
|
||||
_fuel.Inject();
|
||||
_start.Start();
|
||||
_cool.Run();
|
||||
_cat.On();
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
_fuel.Off();
|
||||
_cat.Off();
|
||||
_cool.Cool();
|
||||
_cool.Stop();
|
||||
_air.Off();
|
||||
}
|
||||
}
|
||||
19
patterns/facade/CarEngineFacade/FuelInjector.cs
Normal file
19
patterns/facade/CarEngineFacade/FuelInjector.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
namespace CarEngineFacade;
|
||||
|
||||
public class FuelInjector
|
||||
{
|
||||
public void On()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Inject()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Off()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
}
|
||||
38
patterns/facade/CarEngineFacade/Program.cs
Normal file
38
patterns/facade/CarEngineFacade/Program.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
namespace CarEngineFacade;
|
||||
|
||||
internal class Program
|
||||
{
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
//// without the facade, starting the engine involves creating all the objects
|
||||
//var airflow = new AirFlowController();
|
||||
//var fuel = new FuelInjector();
|
||||
//var start = new Starter();
|
||||
//var cool = new CoolingController();
|
||||
//var cat = new CatalyticConverter();
|
||||
|
||||
//// then performing all the steps in the correct order
|
||||
//airflow.TakeAir();
|
||||
//fuel.On();
|
||||
//fuel.Inject();
|
||||
//start.Start();
|
||||
//cool.Run();
|
||||
//cat.On();
|
||||
|
||||
//// and shut down also requires steps in the correct order
|
||||
//fuel.Off();
|
||||
//cat.Off();
|
||||
//cool.Cool();
|
||||
//cool.Stop();
|
||||
//airflow.Off();
|
||||
|
||||
// with the Facade, all creation is handled internally
|
||||
var facade = new Facade();
|
||||
|
||||
// as is starting
|
||||
facade.Start();
|
||||
|
||||
// and stopping
|
||||
facade.Stop();
|
||||
}
|
||||
}
|
||||
9
patterns/facade/CarEngineFacade/Starter.cs
Normal file
9
patterns/facade/CarEngineFacade/Starter.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
namespace CarEngineFacade;
|
||||
|
||||
public class Starter
|
||||
{
|
||||
public void Start()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace CarEngineFacadeRecording;
|
||||
|
||||
public class AirFlowController
|
||||
{
|
||||
public void TakeAir()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Off()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace CarEngineFacadeRecording;
|
||||
|
||||
public class CatalyticConverter
|
||||
{
|
||||
public void On()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Off()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
namespace CarEngineFacadeRecording;
|
||||
|
||||
public class CoolingController
|
||||
{
|
||||
public void Run()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Cool()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
}
|
||||
29
patterns/facade/CarEngineFacadeRecording/Facade.cs
Normal file
29
patterns/facade/CarEngineFacadeRecording/Facade.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
namespace CarEngineFacadeRecording;
|
||||
|
||||
public class Facade
|
||||
{
|
||||
private readonly AirFlowController _air = new();
|
||||
private readonly CatalyticConverter _cat = new();
|
||||
private readonly CoolingController _cool = new();
|
||||
private readonly FuelInjector _fuel = new();
|
||||
private readonly Starter _start = new();
|
||||
|
||||
public void Start()
|
||||
{
|
||||
_air.TakeAir();
|
||||
_fuel.On();
|
||||
_fuel.Inject();
|
||||
_start.Start();
|
||||
_cool.Run();
|
||||
_cat.On();
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
_fuel.Off();
|
||||
_cat.Off();
|
||||
_cool.Cool();
|
||||
_cool.Stop();
|
||||
_air.Off();
|
||||
}
|
||||
}
|
||||
19
patterns/facade/CarEngineFacadeRecording/FuelInjector.cs
Normal file
19
patterns/facade/CarEngineFacadeRecording/FuelInjector.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
namespace CarEngineFacadeRecording;
|
||||
|
||||
public class FuelInjector
|
||||
{
|
||||
public void On()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Inject()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
|
||||
public void Off()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
}
|
||||
36
patterns/facade/CarEngineFacadeRecording/Program.cs
Normal file
36
patterns/facade/CarEngineFacadeRecording/Program.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
#region
|
||||
|
||||
using CarEngineFacadeRecording;
|
||||
|
||||
#endregion
|
||||
|
||||
//// without the facade, starting the engine involves creating all the objects
|
||||
//var airflow = new AirFlowController();
|
||||
//var fuel = new FuelInjector();
|
||||
//var start = new Starter();
|
||||
//var cool = new CoolingController();
|
||||
//var cat = new CatalyticConverter();
|
||||
|
||||
//// then performing all the steps in the correct order
|
||||
//airflow.TakeAir();
|
||||
//fuel.On();
|
||||
//fuel.Inject();
|
||||
//start.Start();
|
||||
//cool.Run();
|
||||
//cat.On();
|
||||
|
||||
//// and shut down also requires steps in the correct order
|
||||
//fuel.Off();
|
||||
//cat.Off();
|
||||
//cool.Cool();
|
||||
//cool.Stop();
|
||||
//airflow.Off();
|
||||
|
||||
// with the Facade, all creation is handled internally
|
||||
var facade = new Facade();
|
||||
|
||||
// as is starting
|
||||
facade.Start();
|
||||
|
||||
// and stopping
|
||||
facade.Stop();
|
||||
9
patterns/facade/CarEngineFacadeRecording/Starter.cs
Normal file
9
patterns/facade/CarEngineFacadeRecording/Starter.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
namespace CarEngineFacadeRecording;
|
||||
|
||||
public class Starter
|
||||
{
|
||||
public void Start()
|
||||
{
|
||||
// implementation
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user