话说乾隆皇帝酷爱古董文物,大贪官和申当然不会放过这个溜须拍马的好机会,但是苦于他自己不懂文物,也没有时间亲自去收集鉴别,所以干脆私下里成立了一个衙门叫做文物管理局,负责给他收集天下的古董文物。他什么时候想要只需一句话,“来一件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();
        }

    }

}

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


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


Copyright © fred