前言:我也是初学者,希望大家能提出意见。另外转载请注明作者和出处,毕竟花了快一周的时间才完成。
using System.Collections.Generic;
using System.Text;
namespace SimpleFactory
{
//抽象产品:古董
public interface IAntique
{
string Name
{
get;
}
}
//具体产品:瓷器
public class China : IAntique
{
public string Name
{
get { return "宋朝高级宫廷汝窑,珍宝!"; }
}
}
//具体产品:水墨画
public class Wash : IAntique
{
public string Name
{
get { return "贵妃沐浴图,少儿不宜!"; }
}
}
//具体产品:青铜器
public class Bronze : IAntique
{
public string Name
{
get { return "秦始皇祭祀神鼎,无价之宝!"; }
}
}
//工厂:文物管理衙门
public class Yamun
{
static public IAntique Factory(string which)
{
if (which == "瓷器") return new China();
else if (which == "水墨画") return new Wash();
else if (which == "青铜器") return new Bronze();
else throw new Exception("和大人您是不是记错了,我们没有这种玩意!!");
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace SimpleFactory
{
class Client
{
static void Main(string[] args)
{
IAntique antique;
try
{
//需要一个瓷器
antique = Yamun.Factory("瓷器");
Console.WriteLine(antique.Name);
//现在要一幅字画
antique = Yamun.Factory("水墨画");
Console.WriteLine(antique.Name);
//来一件青铜器吧
antique = Yamun.Factory("青铜器");
Console.WriteLine(antique.Name);
//来一件稀奇古怪的玩意
antique = Yamun.Factory("阿司匹林");
Console.WriteLine(antique.Name);
}
catch (Exception e)
{ Console.WriteLine(e.Message); }
Console.Read();
}
}
}
这里有个小问题,和申必须知道衙门里都有些什么文物,如果他要了一件没有的东西就会出错,这对日理万机的和中堂来说可就是个大问题了。另外,如果出现了新种类的古董,文物管理局的内部结构就要重新调整一下,这样可不利于管理呀。不过不要紧,文物管理局由于工作做得好,已经被乾隆皇帝升格了,简单工厂模式也变成了工厂方法模式。具体怎么回事,且听下回分解。