您的位置:首页 > 编程语言 > C#

C# 设计模式之 工厂模式

2012-02-29 16:04 267 查看
把创建对象的事情  封装起来

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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息