惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
D
Docker
GbyAI
GbyAI
宝玉的分享
宝玉的分享
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Vercel News
Vercel News
博客园_首页
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
S
SegmentFault 最新的问题
Microsoft Security Blog
Microsoft Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
V
V2EX
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
IT之家
IT之家
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - LevinLee

单线程与多线程插入大量数据对比 11.明月如何代表我的心 -- 装饰模式 10.生亦何欢巧遇良姻缘 -- 桥接模式 9.嫁接品种火爆搞科研 -- 适配器模式 8.忙里偷闲聚众奔庆典 -- 创建型模式总结 2 7.忙里偷闲聚众奔庆典-- 创建型模式总结 1 6.遛弯儿撞上个创世神-- 原型模式 5.生产过程出套路 -- 建造者模式 4.像个公司喔 -- 抽象工厂模式 2.看你怎么致富 -- 简单工厂模式 1.让你走哪边你走哪边-- 单例模式 0.本故事难也难不住你-- 不是前言的开端 存储优化 - 删除重复记录只保留单条 数据结构简明备忘录 - 线性表 Kerberos协议 闪电咂摸软件隐喻与建模 SPSite、SPWeb对象模型(转winos.cn) 用户登记与满意度评估的业务流程处理 博客开通了,开卷有益,纪念一下
3.要撒了欢的干 -- 工厂方法模式
LevinLee · 2011-12-13 · via 博客园 - LevinLee

       书接上回。

      上文书说到农民甲和农民乙有着各自不同的想法,一个种花生豆,一个种毛豆,而且都获得了大丰收。      

       接着说说工厂方法模式。

---------------------------------------------------------------------------------------------------------------------------

       先送上图例。   

       农民乙是个聪慧的人,他更有想法,他主动与多拉多种子公司(IFactory),建立了良好的战略合作伙伴关系。

       该种子公司实力雄厚,拥有花生分公司(PignutFactory)和毛豆分公司(SoybeanFactory)。

       好像物质上的富足也能带来精神上的愉悦吧,农民乙开始不满足于面朝黄土背朝天的小打小闹的个人生产,他心里盘算着要扩大生产,于是他成立了自己的小作坊,租赁了大块的土地,根据季节时令买入一些花生种和毛豆种,雇佣一些闲散工为他种豆。

       猪年快到了,农民乙请种子公司的专家来他的土地田做实地考察,专家得出结论,猪年种花生豆比较好。

       于是农民乙给多拉多种子公司打电话联系,该公司从花生分公司为农民乙引进了大量的花生种,种花生取得了好丰收。

       转眼间,鼠年也快到了,农民乙故伎重施,该年联系毛豆分公司种毛豆,也毅然决然的毫无悬念的取得了好丰收。

       农民乙请闪电把他的丰功伟绩记录下来,表示为……

    public abstract class Legume
{
public virtual string GetFruit()
{
return string.Empty;
}

}

class Pignut : Legume
{
public override string GetFruit()
{
return "俺是农民乙,俺要扩大生产,多拉多种子公司你今年给我花生种子,我看今年这个成!";
}
}

class Soybean : Legume
{
public override string GetFruit()
{
return "俺是农民乙,俺要扩大生产,多拉多种子公司你今年给我毛豆种子,我看今年这个成!";
}
}

interface IFactory
{
Legume CreateLegume();
}

class PignutFactory : IFactory
{
public Legume CreateLegume()
{
return new Pignut();
}
}

class SoybeanFactory : IFactory
{
public Legume CreateLegume()
{
return new Soybean();
}
}

static void Main(string