본문으로 바로가기

factory pattern c#

category 닷넷관련/디자인패턴 2016.02.05 01:00



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FactoryPatternSample
{
class Program
{
interface ILogger
{
void Log(string Message);
}

enum LoggerType
{
File,
Database,
EventViewer
}

class FileLogger : ILogger
{
public void Log(string Message)
{
Console.WriteLine("{0} - Logged in File.", Message);
}
}

class DatabaseLogger : ILogger
{
public void Log(string Message)
{
Console.WriteLine("{0} - Logged in Database.", Message);
}
}

class EventViewerLogger : ILogger
{
public void Log(string Message)
{
Console.WriteLine("{0} - Logged in EventViewer.", Message);
}
}

class LoggerFactory
{
public static ILogger Get(LoggerType type)
{
switch (type)
{
case LoggerType.Database:
return new DatabaseLogger();
case LoggerType.EventViewer:
return new EventViewerLogger();
case LoggerType.File:
default:
return new FileLogger();
}
}
}

static void Main(string[] args)
{
ILogger logger1 = LoggerFactory.Get(LoggerType.Database);
logger1.Log("Message from Main");

ILogger logger2 = LoggerFactory.Get(LoggerType.File);
logger2.Log("Message from Main");

ILogger logger3 = LoggerFactory.Get(LoggerType.EventViewer);
logger3.Log("Message from Main");

Console.ReadKey();

/*Output
Message from Main - Logged in Database.
Message from Main - Logged in File.
Message from Main - Logged in EventViewer.
*/
}
}
}


댓글을 달아 주세요