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

说明:我也是初学者,希望大家能提出宝贵意见。另外转载请注明作者左洸和出处CSDN,毕竟花费了很长时间才完成

点击浏览更多的“说故事、学模式”系列

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

    }

}

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值