前言:设计模式是软件开发领域的精髓之一。学好设计模式是目前每一个开发人员的必修课。目前关于设计模式的书很多,其中比较好的有GOF那本的中译本,但并不很适合初学者。还有一本是《JAVA与模式》,比较适合初学者使用,在此强烈推荐。但这本书的不足之处是一些地方讲的过于繁琐,很多地方只须简单说明一下即可,却大费笔墨,使得书籍很厚,看起来费力。而且是用JAVA描述的,这使得一些只懂C#的人无从下手。我是一个.net的拥护者,为了看这本书我特意看了些JAVA的书,感觉JAVA在书籍的多样性方面比 .net好很多,而且不少书籍的质量很高。可能是现在JAVA已经比较成熟的原因吧。为了方便.net的爱好者学习设计模式,在此把我学习《JAVA与模式》这本书的学习笔记发出来,并用C#语言重新描述,希望能对初学者有所帮助。
其实设计模式也并不是什么高深的理论,个人认为并不是象一些人所说的“没写过10万代码就不要谈设计模式”,只要用心学习与实践是完全能够掌握的。
简单工厂模式是类的创建模式,又叫做静态工厂方法模式。就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。一般涉及到三种角色:
工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。
抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。
具体产品角色:工厂方法模式所创建的任何对
象都是这个角色的实例,由具体类实现。
简单工厂模式优缺点:
模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。但由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。
以园丁种植水果为例讨论该模式的具体实现:
Fruit 水果接口,规定水果具有的一些共同特性
Apple 苹果类 派生自Fruit接口
Strawberry 草莓类 派生自Fruit接口
FruitGardener 园丁类 负责草莓与苹果的创建工作。
当Client要创建水果(苹果或草莓对象)的时候调用园丁类的factory方法创建:UML图如下:
代码如下:
Fruit.cs
namespace Simple_Factory
{
public interface Fruit
{
//生长
void grow();
//收获
void harvest();
//种植
void plant();
}
}
Apple.cs
namespace Simple_Factory
{
public class Apple:Fruit
{
public Apple()
{
}
#region Fruit 成员
public void grow()
{
Console.WriteLine ("Apple is growing.......");
}
public void harvest()
{
Console.WriteLine ("Apple is harvesting.......");
}
public void plant()
{
Console.WriteLine ("Apple is planting.......");
}
#endregion
}
}
Strawberry.cs
namespace Simple_Factory
{
public class Strawberry:Fruit
{
public Strawberry()
{
}
#region Fruit 成员
public void grow()
{
Console.WriteLine ("Strawberry is growing.......");
}
public void harvest()
{
Console.WriteLine ("Strawberry is harvesting.......");
}
public void plant()
{
Console.WriteLine ("Strawberry is planting.......");
}
#endregion
}
}
FruitGardener.cs
namespace Simple_Factory
{
public class FruitGardener
{
//静态工厂方法
public static Fruit factory(string which)
{
if(which.Equals ("Apple"))
{
return new Apple();
}
else if(which.Equals ("Strawberry"))
{
return new Strawberry ();
}
else
{
return null;
}
}
}
}
Client.cs
using System;
namespace Simple_Factory
{
class Client
{
[STAThread]
static void Main(string[] args)
{
Fruit aFruit=FruitGardener.factory ("Apple");//creat apple
aFruit.grow ();
aFruit.harvest ();
aFruit.plant();
aFruit=FruitGardener.factory ("Strawberry");//creat strawberry
aFruit.grow ();
aFruit.harvest ();
aFruit.plant();
}
}
}
输出如下:
Apple is growing.......
Apple is harvesting.......
Apple is planting.......
Strawberry is growing.......
Strawberry is harvesting.......
Strawberry is planting.......
分享到:
相关推荐
本文将深入探讨C#编程语言中的一个基础设计模式——简单工厂模式。 简单工厂模式是一种创建型设计模式,它的主要目的是提供一个工厂类来负责创建特定类型的对象,而无需让客户端代码知道具体创建过程。在C#中,我们...
### GOF设计模式C#加强版 #### 一、设计模式概述 设计模式是面向对象软件设计中一系列已知问题的有效解决方案集。它不仅有助于解决软件设计中的常见挑战,还能促进代码的可读性和可维护性。设计模式的核心在于描述...
最后,"设计模式——基于C#的工程化实现及扩展_示例说明.txt"文件提供了对源码的解释和应用场景的描述,这对于初学者来说是极其宝贵的资源。它可以帮助你理解每个模式的意图、适用场景以及如何在C#代码中正确地引入...
解释器模式将描述怎样 在 有了一个简单的文法后, 使用模式设计解释这些语句。 在解释器模式里面提到的语言是指任 何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表 文法的命令类的等 级结构,也...
《学员信息管理系统——深入理解C#工厂模式》 在软件开发中,设计模式是一种被广泛认可的解决问题的方法,其中工厂模式是面向对象编程中的一个重要概念。本项目“学员信息管理系统”是一个采用C#语言实现的个人简单...
这份名为“设计模式PPT——25种设计模式详解”的资料,显然是一个深入探讨设计模式的教程,它通过PDF格式对25种主要的设计模式进行了详尽的阐述。 首先,我们要理解设计模式的基本概念。设计模式不是代码,而是一种...
此外,文章可能还会讨论创建者模式与其他设计模式(如工厂模式、抽象工厂模式)的区别和联系,以及在什么情况下选择使用创建者模式。创建者模式在大型项目中尤其有用,因为它可以帮助我们处理那些具有多种构造方式且...
《C#设计模式》这本书是面向C#程序员的一份宝贵资源,它深入讲解了软件设计中的核心概念——设计模式。设计模式是经过时间考验、在特定情境下解决常见问题的有效解决方案,是软件开发中的最佳实践。通过理解和应用...
筒单工厂模式是一种常见的设计模式,它在软件工程中扮演着重要的角色,特别是在使用C#和.NET框架开发应用程序时。这种模式属于创建型设计模式,它的主要目的是为客户端代码提供一个创建对象的接口,而无需指定对象的...
在标题和描述中提到的"C#工厂模式(access2007,sql2005)",我们可以理解为这个项目或教程可能涉及到如何使用C#的工厂模式来处理数据库操作,特别是与Access 2007和SQL Server 2005的交互。Access 2007是一款轻量级的...
在本书中提到的简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在简单工厂模式中,工厂类负责创建所有对象,而客户端只需向工厂类传入正确的参数,便能得到需要的对象实例。简单工厂模式的实现...
抽象工厂设计模式是一种创建型设计模式,它提供了一种创建对象族的方法,而无需指定具体的类。这种模式在处理相关对象族的创建时特别有用,因为它允许创建一组具有相同接口的对象,而无需指定它们的具体类型。C#作为...
在描述中提到的工具——"C#工厂模式生成器",很可能是专为C#开发者设计的一个自动化代码生成工具。这类工具通常具备以下功能: 1. **模板化代码生成**:允许开发者定义模板,根据模板自动生成如数据库访问层(DAL)...
【描述】:EMS(简单工厂模式).rar EMS,可能指的是“Enterprise Message Service”,即企业消息服务,它通常涉及到在分布式系统中处理数据传输和通信。在这个上下文中,我们讨论的是将简单工厂模式应用于EMS系统...
- **使用设计模式**:例如简单工厂模式、策略模式等,提高代码的灵活性和可扩展性。 - **注重代码质量**:遵循面向对象的基本原则如封装、继承、多态等,提高代码的可读性和可维护性。 - **重构**:通过重构代码...
1. **设计模式**:常用的设计模式如单例模式、工厂模式、观察者模式等在C#中的应用。 2. **LINQ**:Language Integrated Query,介绍如何使用LINQ简化数据查询操作。 3. **依赖注入与IoC容器**:解释依赖注入的基本...
这份手册以三种主流编程语言——C++、C#和Java为载体,深入剖析了每一种设计模式的核心概念和实现方式。设计模式是软件开发中的经验总结,是解决常见问题的有效模板,它们能够提升代码的可读性、可维护性和可扩展性...
设计模式并不是一种具体的代码或者库,而是一种在面向对象编程中描述如何高效地设计和实现类与对象之间关系的经验总结。设计模式使得开发者能够基于已有的经验快速理解和构建复杂的软件系统。 首先,我们要区分设计...
【ASP.NET工厂模式网上书店(整站系统)】是一个基于ASP.NET技术开发的在线图书销售平台,虽然在描述中提到部分功能尚未完善,但整体设计思路清晰,易于理解。此项目应用了工厂模式,这是一种常用的软件设计模式,...