Added Week 7 Project
This commit is contained in:
parent
9583f16b74
commit
aaed2e6560
13
158.326 Software Architecture.sln
Normal file
13
158.326 Software Architecture.sln
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.31515.178
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {A613E761-D85D-4A76-8EFC-5A095B348A49}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
9
158326 Week 7 Singletons/158326 Week 7 Singletons.csproj
Normal file
9
158326 Week 7 Singletons/158326 Week 7 Singletons.csproj
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
|
<RootNamespace>_158326_Week_7_Singletons</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
25
158326 Week 7 Singletons/158326 Week 7 Singletons.sln
Normal file
25
158326 Week 7 Singletons/158326 Week 7 Singletons.sln
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.31515.178
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "158326 Week 7 Singletons", "158326 Week 7 Singletons.csproj", "{0540B959-6D66-4CBD-A18F-74344B782EF8}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{0540B959-6D66-4CBD-A18F-74344B782EF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0540B959-6D66-4CBD-A18F-74344B782EF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0540B959-6D66-4CBD-A18F-74344B782EF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{0540B959-6D66-4CBD-A18F-74344B782EF8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {2ED746F5-A191-4E18-B64C-A78216BC01E7}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
59
158326 Week 7 Singletons/Program.cs
Normal file
59
158326 Week 7 Singletons/Program.cs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace _158326_Week_7_Singletons
|
||||||
|
{
|
||||||
|
class Program
|
||||||
|
{
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
Console.WriteLine("158.326 Software Architecture");
|
||||||
|
Console.WriteLine("\tWeek 7 - Singleton Design Pattern");
|
||||||
|
Console.WriteLine("\tSingletons are instanced classes that can have only 0 or 1 instances of that class in existance in the application (Multitons are a variant that restricts the maximum number of instances)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a singleton file stream; useful for logs etc., where access to a specific file should be performed singularly
|
||||||
|
/// (don't open multiple streams on the same file)
|
||||||
|
/// </summary>
|
||||||
|
sealed class FileSingleton
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Store the instance in a private, static variable
|
||||||
|
/// </summary>
|
||||||
|
private static FileSingleton instance;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Path of the file to open
|
||||||
|
/// </summary>
|
||||||
|
public static Uri FilePath { get; set; } = new Uri("\\log.txt", UriKind.Relative); // Opens exactly one file stream on log.txt and will always return that stream
|
||||||
|
|
||||||
|
// We can define instance variables here:
|
||||||
|
public FileStream OpenedFileStream { get; set; } // Calling FileSingleton.GetInstance().OpenedFileStream will always return this object
|
||||||
|
|
||||||
|
|
||||||
|
// We can also define
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The default constructor must be implemented, and as private so only functions in this class may call it
|
||||||
|
/// This restricts the creation of this instance to local methods, so by restricting constructor calls
|
||||||
|
/// to GetInstance(), we can ensure that only one instance is created
|
||||||
|
/// </summary>
|
||||||
|
private FileSingleton() { }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the initialised instance of FileSingleton
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static FileSingleton GetInstance()
|
||||||
|
{
|
||||||
|
if (instance is null)
|
||||||
|
{
|
||||||
|
instance = new FileSingleton();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user