2012년 6월 쯤, 디자인패턴에 관심이 생겼을 때 C#으로 구현된 코드를 찾아보기가 쉽지 않아 개념적인 것을 보고 혼자 구현해봤던
추상 팩토리입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | using System; using System.Collections.Generic; using System.Text; class AbstractFactory { static void Main(string[] args) { Restaurant restaurant1 = new Restaurant(CookType.Korea); Console.WriteLine(restaurant1.Cooking()); Restaurant restaurant2 = new Restaurant(CookType.Japen); Console.WriteLine(restaurant1.Cooking()); } } | cs |
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | using System; using System.Collections.Generic; using System.Text; using System.ComponetModel; using System.Reflection; public enum CookType { [Description("Korea")] Korea = 0, [Description("Japen")] Japen = 1 } class Restaurant { KoreaChef koreaChef; JapenChef japenChef; string food; public Restaurant(CookType cookType) { switch(cookType) { case CookType.Korea : KoreaCooking(); break; case CookType.Japen: JapenCooking(); break; } } //한국음식 private void KoreaCooking() { koreaChef = new KoreaChef(); food = koreaChef.Cooking(); } //일본음식 private void JapenCooking() { japenChef = new JapenChef(); food = japenChef .Cooking(); } public String Cooking() { return food; } } | cs |
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 29 | using System; using System.Collections.Generic; using System.Text; abstract class Chef { public abstract String Cooking(); } //상속 받은 클래스 class KoreaChef : Chef { public override string Cooking() { string cook = "갈비탕 나왔습니다."; return cook; } } class JapenChef : Chef { public override string Cooking() { string cook = "초밥 나왔습니다."; return cook; } } | cs |
2012년도면 2년차?정도 되었을 땐거 같은데 지금 다시 구현하라고 하면 아마.. 인터페이스로 구현하지 않을까 생각해봅니다.
인터페이스 형식으론 다음에 시간 되면 해볼게요.
'C# 디자인패턴' 카테고리의 다른 글
05# Factory Method 패턴2 Creational Patterns (0) | 2019.05.23 |
---|---|
04# Factory Method 패턴1 Creational Patterns (0) | 2019.05.23 |
03# 추상 팩토리(Abstract Factory) 패턴 Creational Patterns (0) | 2019.05.22 |
02# Builder 패턴 Creational Patterns (0) | 2019.05.22 |
01# 싱글턴(Singleton) 패턴 (0) | 2016.04.18 |