예제코드
namespace 대장간시스템
{
class 장비
{
string 가루;
string 정수;
int 공격력;
int 방어력;
public 장비() { }
public void Set가루(string d) { 가루 = d; }
public void Set정수(string s) { 정수 = s; }
}
abstract class 생산슬롯
{
protected 장비 장비객체;
public 생산슬롯() { }
public 장비 Get장비() { return 장비객체; }
public void 장비객체생성() { 장비객체 = new 장비(); }
public abstract void Build가루();
public abstract void Build정수();
public abstract void Build옵션();
}
class 무기생산슬롯 : 생산슬롯
{
public override void Build가루()
{
장비객체.Set가루("붉은 영혼의 가루");
}
public override void Build정수()
{
장비객체.Set정수("못된 보스의 정수");
}
public override void Build옵션()
{
// 장비객체.공격력 = 랜덤생성;
}
}
class 방어구생산슬롯 : 생산슬롯
{
public override void Build가루()
{
장비객체.Set가루("푸른 영혼의 가루");
}
public override void Build정수()
{
장비객체.Set정수("무지센 보스의 정수");
}
public override void Build옵션()
{
// 장비객체.방어력 = 랜덤생성;
}
}
class 대장장이
{
private 생산슬롯 선택된생산슬롯;
public void Set생산슬롯(생산슬롯 slot) { 선택된생산슬롯 = slot; }
public 장비 Get장비() { return 선택된생산슬롯.Get장비(); }
public void Construct장비()
{
선택된생산슬롯.장비객체생성();
선택된생산슬롯.Build가루();
선택된생산슬롯.Build정수();
선택된생산슬롯.Build옵션();
}
}
class Program
{
static void Main(string[] args)
{
대장장이 히드리그 = new 대장장이();
생산슬롯[] 생산슬롯들 =
{
new 무기생산슬롯(),
new 방어구생산슬롯()
};
히드리그.Set생산슬롯(생산슬롯들[0]);
히드리그.Construct장비();
장비 제작한장비 = 히드리그.Get장비();
}
}
}
'Programming > Design Pattern' 카테고리의 다른 글
[C# 디자인패턴] 제7강 어댑터패턴 (0) | 2015.07.18 |
---|---|
[C# 디자인패턴] 제6강 프로토타입패턴 (0) | 2015.07.18 |
[C# 디자인패턴] 제4강 추상팩토리패턴 (0) | 2015.07.18 |
[C# 디자인패턴] 제3강 팩토리메소드패턴 (0) | 2015.07.18 |
[C# 디자인패턴] 제2강 싱글턴패턴 (0) | 2015.07.18 |