把建立對象的事情 封裝起來
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DesignPytternDemo{ /// <summary> /// 簡單工廠 /// </summary> public interface IFood { int Price { get; } } public class Orange : IFood { public Orange() { Console.WriteLine("orange created"); } public int Price { get { return 1; } } } public class Rice : IFood { public Rice() { Console.WriteLine("rice created"); } public int Price { get { return 3; } } } public static class FoodFactory { public static IFood CreateFood(string foodType) { IFood f = null; switch (foodType) { case "o": f = new Orange(); break; case "r": f = new Rice(); break; default: break; } return f; } } /// <summary> /// 抽象工廠 /// </summary> public interface IActionGame { } public class Kof : IActionGame { public Kof() { Console.WriteLine("Kof created"); } } public class War3 : IActionGame { public War3() { Console.WriteLine("War3 created"); } } public class Cs : IActionGame { public Cs() { Console.WriteLine("Cs created"); } } public interface IRPG { } public class menghuan : IRPG { public menghuan() { Console.WriteLine("menghuan created"); } } public class Legend : IRPG { public Legend() { Console.WriteLine("Legend created"); } } public class Diablo : IRPG { public Diablo() { Console.WriteLine("Diablo created"); } } public abstract class GameFactory { public abstract IActionGame CreateActionGame(); public abstract IRPG CreateRpgGame(); } public class MyGameFactory : GameFactory { public override IActionGame CreateActionGame() { return new Kof(); } public override IRPG CreateRpgGame() { return new Legend(); } }}
以上就是C# 設計模式之 原廠模式的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!