13. 프락스 패턴(Proxy Pattern) - 가상 프락시
▶ IConvert.cs
namespace VirtualProxy
{
interface IConvert
{
string Image
{
get;
set;
}
void ClearImage();
string ConvertImage();
}
}
▶ ImageConverter.cs
using System;
using System.Threading;
namespace VirtualProxy
{
class ImageConverter:IConvert
{
public string Image
{
get;
set;
}
public ImageConverter()
{
Image = string.Empty;
}
public void ClearImage()
{
Image = string.Empty;
}
public string ConvertImage()
{
for (int i = 0; i < 3; i++)
{
Console.WriteLine("{0}이미지 변환 작업중",Image);
Thread.Sleep(200);
}
Image = Image.ToLower();
return Image;
}
}
}
▶ VirtualConverter.cs
using System;
using System.Threading;
namespace VirtualProxy
{
class VirtualConverter : IConvert
{
ImageConverter realconverter = new ImageConverter();
Thread thread = null;
public string Image
{
get
{
return realconverter.Image;
}
set
{
realconverter.Image = value;
}
}
public VirtualConverter()
{
Image = string.Empty;
}
public void ClearImage()
{
Image = string.Empty;
}
public string ConvertImage()
{
if (thread == null)
{
ThreadStart threadDelegate = new ThreadStart(RealConvert);
thread = new Thread(threadDelegate);
thread.Start();
return "변환을 시작하였습니다.";
}
return "이미 변환 작업을 요청하여 수행하고 있는 중입니다.";
}
void RealConvert()
{
realconverter.ConvertImage();
Console.WriteLine("변환 작업을 완료하였습니다.");
thread = null;
}
}
}
▶ Program.cs
using System;
using System.Threading;
namespace VirtualProxy
{
class Program
{
static void Main(string[] args)
{
VirtualConverter mc = new VirtualConverter();
VirtualConverter mc2 = new VirtualConverter();
mc.Image="EVERYDAY IS A HOLIDAY.";
mc2.Image="WELCOME TO EHCLUB.NET.";
mc.ConvertImage();
mc2.ConvertImage();
for (int i = 0; i < 4; i++)
{
Console.WriteLine(mc.Image);
Console.WriteLine(mc2.Image);
Thread.Sleep(1000);
}
}
}
}
'.NET > 설계 패턴(C#)' 카테고리의 다른 글
[설계 패턴 C#] 15. 책임 연쇄 패턴(Chain of Responsibility Pattern) (0) | 2016.12.05 |
---|---|
[설계 패턴 C#]14. 프락스 패턴(Proxy Pattern) - 보호용 프락시 (0) | 2016.06.24 |
[설계 패턴 C#]12. 프락스 패턴(Proxy Pattern) - 원격지 프락시 (0) | 2016.06.23 |
[설계 패턴 C#] 11. 플라이급 패턴(Flyweight Pattern) (0) | 2016.06.23 |
[설계 패턴 C#] 10. 퍼샤드 패턴 (0) | 2016.06.09 |