把创建对象的事情 封装起来
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();
}
}
}