设计模式之C#简单工厂模式(共5页).docx

上传人:飞****2 文档编号:17078841 上传时间:2022-05-21 格式:DOCX 页数:5 大小:15.09KB
返回 下载 相关 举报
设计模式之C#简单工厂模式(共5页).docx_第1页
第1页 / 共5页
设计模式之C#简单工厂模式(共5页).docx_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《设计模式之C#简单工厂模式(共5页).docx》由会员分享,可在线阅读,更多相关《设计模式之C#简单工厂模式(共5页).docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上前 言:设计模式是软件开发领域的精髓之一。学好设计模式是目前每一个开发人员的必修课。目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并 不很适合初学者。还有一本是JAVA与模式,比较适合初学者使用,在此强烈推荐。但这本书的不足之处是一些地方讲的过于繁琐,很多地方只须简单说明一 下即可,却大费笔墨,使得书籍很厚,看起来费力。而且是用JAVA描述的,这使得一些只懂C#的人无从下手。我是一个.net的拥护者,为了看这本书我特 意看了些JAVA的书,感觉JAVA在书籍的多样性方面比 .net好很多,而且不少书籍的质量很高。可能是现在JAVA已经比较成熟的原因吧。

2、为了方便.net的爱好者学习设计模式,在此把我学习JAVA与模 式这本书的学习笔记发出来,并用C#语言重新描述,希望能对初学者有所帮助。其实设计模式也并不是什么高深的理论,个人认为并不是象一些人所说的“没写过10万代码就不要谈设计模式”,只要用心学习与实践是完全能够掌握的。简单工厂模式是类的创建模式,又叫做静态工厂方法模式。就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。一般涉及到三种角色(如下图):工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。抽象产品角色:担任这个角色的类是由工厂方法模

3、式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,由具体类实现。简单工厂模式优缺点:模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。但由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。以园丁种植水果为例讨论该模式的具体实现:Fruit 水果接口,规定水果具有的一些共同特性Apple 苹果类 派生自Fruit接口Strawberry 草莓类 派生自Fruit接口FruitGardener 园丁类 负责草莓

4、与苹果的创建工作。当Client要创建水果(苹果或草莓对象)的时候调用园丁类的factory方法创建:图如下:代码如下:Fruit.csnamespace Simple_Factorypublic interface Fruit/生长void grow();/收获void harvest();/种植void plant();Apple.csnamespace Simple_Factorypublic class Apple:Fruitpublic Apple()#region Fruit 成员public void grow()Console.WriteLine (Apple is growi

5、ng.);public void harvest()Console.WriteLine (Apple is harvesting.);public void plant()Console.WriteLine (Apple is planting.);#endregionStrawberry.csnamespace Simple_Factorypublic class Strawberry:Fruitpublic Strawberry()#region Fruit 成员public void grow()Console.WriteLine (Strawberry is growing.);pub

6、lic void harvest()Console.WriteLine (Strawberry is harvesting.);public void plant()Console.WriteLine (Strawberry is planting.);#endregionFruitGardener.csnamespace Simple_Factorypublic class FruitGardener/静态工厂方法public static Fruit factory(string which)if(which.Equals (Apple)return new Apple();else if

7、(which.Equals (Strawberry)return new Strawberry ();elsereturn null;Client.csusing System;namespace Simple_Factoryclass ClientSTAThreadstatic void Main(string args)Fruit aFruit=FruitGardener.factory (Apple);/creat appleaFruit.grow ();aFruit.harvest ();aFruit.plant();aFruit=FruitGardener.factory (Stra

8、wberry);/creat strawberryaFruit.grow ();aFruit.harvest ();aFruit.plant();输出如下:Apple is growing.Apple is harvesting.Apple is planting.Strawberry is growing.Strawberry is harvesting.Strawberry is planting.简单工厂模式的基本原理:创建一个抽象工厂,它决定返回哪一个类的实例并将该实例返回。接下来可以调用那个类实例的方法,但不需要知道具体使用的是哪一个子类,这种方法把和数据相关的问题与类的其他方法分隔开来。它能返回具有同样方法的类的实例,它们可以是不同的派生子类的实例,也可以是实际上毫无关系仅仅是共享了相同接口的类。不管哪一种类实例中的方法必须是相同的,并且能够被交替使用。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁