Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions DependencyInversion_Shared/Alarms/IAlarm.cs

This file was deleted.

25 changes: 11 additions & 14 deletions DependencyInversion_Shared/DependencyInversion_Shared.projitems
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,17 @@
<Import_RootNamespace>DependencyInversion_Shared</Import_RootNamespace>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)Alarms\EnhancedDisplayAlarm.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Alarms\PersistentBeepAlarm.cs" />
<Compile Include="$(MSBuildThisFileDirectory)DiagnosticsLogger.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Alarms\DisplayAlarm.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Alarms\IAlarm.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Sensors\ISensor.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Sensors\PressureSensor.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Sensors\Sensor.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Sensors\TemperatureSensor.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Sensors\TemperatureSensorData.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Alarms\WarningBellAlarm.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TemperatureSensorLogger.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="$(MSBuildThisFileDirectory)Sensors\" />
<Compile Include="$(MSBuildThisFileDirectory)SpellAlarms\DisplayAlarm.cs" />
<Compile Include="$(MSBuildThisFileDirectory)SpellAlarms\EnhancedDisplayAlarm.cs" />
<Compile Include="$(MSBuildThisFileDirectory)SpellAlarms\IAlarm.cs" />
<Compile Include="$(MSBuildThisFileDirectory)SpellAlarms\PersistentBeepAlarm.cs" />
<Compile Include="$(MSBuildThisFileDirectory)SpellAlarms\WarningBellAlarm.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Spells\ISpell.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Spells\PressureSpell.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Spells\Spell.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Spells\TemperatureSpell.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Spells\TemperatureSpellData.cs" />
<Compile Include="$(MSBuildThisFileDirectory)TemperatureSpellLogger.cs" />
</ItemGroup>
</Project>
10 changes: 0 additions & 10 deletions DependencyInversion_Shared/Sensors/ISensor.cs

This file was deleted.

19 changes: 0 additions & 19 deletions DependencyInversion_Shared/Sensors/Sensor.cs

This file was deleted.

27 changes: 0 additions & 27 deletions DependencyInversion_Shared/Sensors/TemperatureSensor.cs

This file was deleted.

5 changes: 0 additions & 5 deletions DependencyInversion_Shared/Sensors/TemperatureSensorData.cs

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
using DependencyInversion;
using System.Diagnostics;
using System.Diagnostics;

namespace DependencyInversion
{
public sealed class DisplayAlarm : IAlarm
public sealed class DisplayAlarm : ISpellAlarm
{
public void RaiseAlarm()
public void RaiseSpellAlarm()
{
// we'll just pretend to raise an alarm here.
Debug.WriteLine("An alarm was raised");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

namespace DependencyInversion
{
public sealed class EnhancedDisplayAlarm : IAlarm
public sealed class EnhancedDisplayAlarm : ISpellAlarm
{
public void RaiseAlarm()
public void RaiseSpellAlarm()
{
// we'll just pretend to raise an alarm here.
Debug.WriteLine("AN ALARM WAS RAISED, GOD DAMMIT!!!");
Expand Down
7 changes: 7 additions & 0 deletions DependencyInversion_Shared/SpellAlarms/IAlarm.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace DependencyInversion
{
public interface ISpellAlarm
{
void RaiseSpellAlarm();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

namespace DependencyInversion
{
public sealed class PersistentBeepAlarm : IAlarm
public sealed class PersistentBeepAlarm : ISpellAlarm
{
public void RaiseAlarm()
public void RaiseSpellAlarm()
{
int i = 0;
do
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

namespace DependencyInversion
{
public sealed class WarningBellAlarm : IAlarm
public sealed class WarningBellAlarm : ISpellAlarm
{
public void RaiseAlarm()
public void RaiseSpellAlarm()
{
Console.Beep();
}
Expand Down
10 changes: 10 additions & 0 deletions DependencyInversion_Shared/Spells/ISpell.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace DependencyInversion
{
public interface ISpell
{
void AttachSpellAlarm(ISpellAlarm spellAlarm);

void RaiseSpellAlarms();
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace DependencyInversion
{
public sealed class PressureSensor : Sensor
public sealed class PressureSpell : Spell
{
}
}
19 changes: 19 additions & 0 deletions DependencyInversion_Shared/Spells/Spell.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System.Collections.Generic;

namespace DependencyInversion
{
public class Spell : ISpell
{
protected List<ISpellAlarm> _spellAlarms = new();

public void AttachSpellAlarm(ISpellAlarm spellAlarm)
{
_spellAlarms.Add(spellAlarm);
}

public void RaiseSpellAlarms()
{
_spellAlarms.ForEach(alarm => alarm.RaiseSpellAlarm());
}
}
}
23 changes: 23 additions & 0 deletions DependencyInversion_Shared/Spells/TemperatureSpell.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using System;

namespace DependencyInversion
{
public sealed class TemperatureSpell : Spell
{
public string Id { get; private set; }

public TemperatureSpell(string spellId)
{
Id = spellId;
}

/// <summary>
/// Get the current temperature of the spell.
/// </summary>
public double GetTemperature()
{
Random rnd = new();
return rnd.NextDouble();
}
}
}
5 changes: 5 additions & 0 deletions DependencyInversion_Shared/Spells/TemperatureSpellData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
namespace DependencyInversion
{
public record struct TemperatureSpellData(string SpellId, double SpellTemperature);

}
30 changes: 0 additions & 30 deletions DependencyInversion_Shared/TemperatureSensorLogger.cs

This file was deleted.

29 changes: 29 additions & 0 deletions DependencyInversion_Shared/TemperatureSpellLogger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using System.Collections.Generic;

namespace DependencyInversion
{
/// <summary>
/// A logger that writes temperature spell data.
/// </summary>
public sealed class TemperatureSpellLogger
{
private readonly DiagnosticsLogger _diagnosticsLogger;

public TemperatureSpellLogger(DiagnosticsLogger diagnosticsLogger)
{
_diagnosticsLogger = diagnosticsLogger;
}

/// <summary>
/// Write data for all temperature-sensors to the log.
/// </summary>
public void WriteAllTemperatureSpellsDataToLog(IEnumerable<TemperatureSpellData> temperatureSpellsData)
{
foreach(TemperatureSpellData spellData in temperatureSpellsData)
{
string logMessage = $"Spell {spellData.SpellId} reported value {spellData.SpellTemperature:N2}";
_diagnosticsLogger.WriteToLog(logMessage);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
using StrategyPattern;
using System.Diagnostics;

namespace StrategyPatern_problem
namespace StrategyPattern_problem
{
public sealed class Program
{
/// <summary>
/// Dilemma: we need to calculate a 'user reputation' for our dating service users, based on which type of member they are. How do we go about that in the best, most flexible way? In the below example, the DatingUser-class shifts between types to accomodate different UserReputation values.
/// Dilemma: we need to calculate a 'user reputation' for our dating service users, based on which type of member they are.
/// How do we go about that in the best, most flexible way? In the below example, the DatingUser-class shifts between types to accommodate different UserReputation values.
/// </summary>
private static void Main()
{
DatingUser someUser = new();

someUser.NumberOfAnsweredQuestions = 3;
someUser.userReputation = UserReputationEnum.BasicUserReputation;
DatingUser someUser = new()
{
NumberOfAnsweredQuestions = 3,
userReputation = UserReputationEnum.BasicUserReputation
};

int calculatedReputation = someUser.CalculateReputation();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System;
using System.Diagnostics;
using TemplatePattern;
using TemplatePattern;

namespace TemplatePattern_challenge
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System;

namespace TemplatePattern
namespace TemplatePattern
{
public struct Member
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
using System;
using System.Diagnostics;

namespace TemplatePattern
namespace TemplatePattern
{
// The Template Pattern lets us define a series of common steps, deferring some steps to sub-classes.
// Let's redo the notifications in the style of the pattern:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Diagnostics;

namespace FactoryPattern
namespace FactoryPattern
{
public class BasicUserAuthenticator : IAuthenticator
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Diagnostics;

namespace FactoryPattern
namespace FactoryPattern
{
public sealed class BasicUserAuthorizer : IAuthorizer
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Diagnostics;

namespace FactoryPattern
namespace FactoryPattern
{
public class SuperUserAuthenticator : IAuthenticator
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Diagnostics;

namespace FactoryPattern
namespace FactoryPattern
{
public sealed class SuperUserAuthorizer : IAuthorizer
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using FactoryPattern;
using System;

namespace AbstractFactoryPattern
{
Expand Down
Loading