现在的位置: 首页 > 综合 > 正文

(4)简单工厂模式 — Simple Factory — 文物管理衙门 — 和申的经营之道第一部分

2012年08月13日 ⁄ 综合 ⁄ 共 2236字 ⁄ 字号 评论关闭

 前言:我也是初学者,希望大家能提出意见。另外转载请注明作者和出处,毕竟花了快一周的时间才完成。

 
话说乾隆皇帝酷爱古董文物,大贪官和申当然不会放过这个溜须拍马的好机会,但是苦于他自己不懂文物,也没有时间亲自去收集鉴别,所以干脆私下里成立了一个衙门叫做文物管理局,负责给他收集天下的古董文物。他什么时候想要只需一句话,“来一件XXX”,一件文物就到他手里了。
 
看出点名堂了吧,我们的和中堂要是在现代可是设计模式高手哦。这就是简单工厂模式了。
 
文物管理局就是工厂,青铜器、字画、瓷器都是具体产品,客户端当然是和申了,他不需要亲自创建这些产品,需要的时候给工厂招呼一声就是了,虽然他不懂也没有时间去研究这些产品(当官就是好啊,呵呵)。下面看看代码吧:
 
工厂类及产品类:SimpleFactory.cs
 
using System;
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("和大人您是不是记错了,我们没有这种玩意!!");
        }

    }


}

客户端:Client.cs

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

    }

}

这里有个小问题,和申必须知道衙门里都有些什么文物,如果他要了一件没有的东西就会出错,这对日理万机的和中堂来说可就是个大问题了。另外,如果出现了新种类的古董,文物管理局的内部结构就要重新调整一下,这样可不利于管理呀。不过不要紧,文物管理局由于工作做得好,已经被乾隆皇帝升格了,简单工厂模式也变成了工厂方法模式。具体怎么回事,且听下回分解。

抱歉!评论已关闭.