[설계 패턴 C#] 23. 전략 패턴(Strategy Pattern)
"본문 내용"
[Escort GoF의 디자인 패턴 C#] 23. 전략 패턴(Strategy Pattern)
[Escort GoF의 디자인 패턴 C#] 23. 전략 패턴(Strategy Pattern) 설계
[Escort GoF의 디자인 패턴 C#] 23. 전략 패턴(Strategy Pattern) 구현
▶ Picture.cs
namespace Strategy
{
class Picture
{
public string Name{ get; private set; }
public int Tone{ get; private set; }
public int Brightness{ get; private set; }
public int Saturation{ get; private set; }
public Picture(string name,int tone,int brightness,int saturation)
{
Name = name;
Tone = tone;
Brightness = brightness;
Saturation = saturation;
}
}
}
▶ IView.cs
namespace Strategy
{
interface IView
{
void View(Picture picture);
}
}
▶ VerifyViewer.cs
using System;
namespace Strategy
{
class VerifyViewer:IView
{
public void View(Picture picture)
{
Console.WriteLine("사진 파일명:{0}", picture.Name);
Console.WriteLine("색조:{0}", picture.Tone);
Console.WriteLine("명도:{0}", picture.Brightness);
Console.WriteLine("채도:{0}", picture.Saturation);
}
}
}
▶ SimpleViewer.cs
using System;
namespace Strategy
{
class SimpleViewer:IView
{
public void View(Picture picture)
{
Console.WriteLine("사진 파일명:{0}", picture.Name);
}
}
}
▶ PictureCollection.cs
using System;
using System.Collections.Generic;
namespace Strategy
{
class PictureCollection
{
List<Picture> pictures = new List<Picture>();
IView[] viewer = new IView[2];
int mode;
public PictureCollection()
{
viewer[0] = new VerifyViewer();
viewer[1] = new SimpleViewer();
SetMode(0);
}
public void Add(Picture picture)
{
pictures.Add(picture);
}
public void SetMode(int mode)
{
if(mode==1){ this.mode = 1; }
else{ this.mode = 0; }
}
public void View()
{
ViewMode();
IView iview = viewer[mode];
foreach(Picture picture in pictures)
{
iview.ViewPicture(picture);
}
}
private void ViewMode()
{
if(mode==1)
{
Console.WriteLine("간략 보기 모드");
}
else
{
Console.WriteLine("자세히 보기 모드");
}
}
}
}
▶ Program.cs
namespace Strategy
{
class Program
{
static void Main(string[] args)
{
Picture picture1 = new Picture("천안 각원사", 100, 100, 100);
Picture picture2 = new Picture("천안 유관순 열사 기념관", 120, 90, 90);
PictureCollection pc = new PictureCollection();
pc.Add(picture1);
pc.Add(picture2);
pc.View();
pc.SetMode(1);
pc.View();
}
}
}
'.NET > 설계 패턴(C#)' 카테고리의 다른 글
[설계 패턴 C#] 25. 방문자 패턴(Visitor Pattern) (0) | 2016.12.09 |
---|---|
[설계 패턴 C#] 24. 템플릿 메서드 패턴(Template Method Pattern) (0) | 2016.12.09 |
[설계 패턴 C#] 22. 상태 패턴(State Pattern) (0) | 2016.12.09 |
[설계 패턴 C#] 21. 감시자 패턴(Observer Pattern) (0) | 2016.12.09 |
[설계 패턴 C#] 20. 메멘토 패턴(Memento Pattern) (0) | 2016.12.08 |