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 |
댓글 0