c#에서 프로토 타입패턴 구현하려면, MemberwiseClone()에 대한 이해가 필요함.

공유 가능한 참조객체로만 구성되면, Clone() => MemberwiseClone()로 만들고, 공유불가능한 참조객체가 있으면 저렇게 만듬.

그리고 Clone 반환값을 다형화안하는 이유는 파생되도 데이터구조가 유지되는 이상, 저렇게 명시적으로 하는게 전통이기 때문임.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
abstract class 인간
{
public String 이름;
public 인간 배우자;
public 인간(String 이름, 인간 배우자) => (this.이름, this.배우자) = (이름, 배우자);
public abstract 인간 Clone();
}
class 남자 : 인간
{
public 남자(String 이름, 인간 배우자) : base(이름, 배우자) { }
public override 인간 Clone() => (인간)new 남자(this.이름, null);
}
class 여자 : 인간
{
public 여자(String 이름, 인간 배우자) : base(이름, 배우자) { }
public override 인간 Clone() => (인간)new 여자(this.이름, null);
}
class MainApp
{
static void Main()
{
// Create two instances and clone each
남자 복제인간프로토타입 = new 남자("돌리", null);
남자 복제인간 = (남자)복제인간프로토타입.Clone();
}
}
c


s