云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C#设计模式系列:工厂方法模式(Factory Method)

C#设计模式系列:工厂方法模式(Factory Method)

  • 62 次阅读
  • 3 次下载
  • 2025/6/1 23:39:48

C#设计模式系列:工厂方法模式(Factory Method)

1. 工厂方法模式简介

1. 工厂方法模式简介1.1 定义 工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式是以一个类的实例化延迟到其子类。 Factory Method模式用于在不指定待创建对象的具体类的情况下创建对象。 Factory Method模式的主要意图是隐藏对象创建的复杂性。Client通常不指定要创建的具体类,Client将面向接口或抽象类进行编码,让Factory类负责创建具体的类型。通常Factory类有一个返回抽象类或者接口的静态方法。Client通常提供某种信息让Factory类使用提供的信息来确定创建并返回哪个子类。 将创建子类的责任抽象出来的好处是允许Client完全无需考虑依赖类是如何创建的,这遵守依赖倒置原则(Dependency Inversion Principle,DIP)。Factory Method模式另外一个好处是把负责对象创建的代码集中起来,如果需要修改对象生成方式,可以轻松定位并更新,而不会影响到依赖它的代码。 在面向对象编程中,一般方法是用一个new操作符产生一个对象的实例。但是在一些情况下,用new操作符直接生成对象会带来一些问题。首先,要使用new运算符创建一个对象必须清楚所要创建的对象的类信息,包括类名、构造函数等,而有时并不

现实。其次许多类型的对象创建需要一系列的步骤,可能需要计算或取得对象的初始设置,选择生成那个子对象实例,或在生成需要的对象之前必须生成一些辅助功能的对象。在这些情况下,新对象的建立就是一个过程,而不是一个简单的操作。为轻松方便地完成复杂对象的创建,从而引入了工厂模式。1.2 使用频率 高2. 工厂方法模式结构2.1 结构图2.2 参与者 工厂方法模式参与者: Product:Product角色,定义工厂方法所创建的对象的接口 ConcreteProduct:具体Product角色,实现Product接口 Factory ° 抽象的工厂角色,声明工厂方法,该方法返回一个Product类型的对象 ° Factory可以定义一个工厂方法的默认实现,返回一个默认的ConcreteProduct对象。可以调用工厂方法以创建一个Product对象。 ConcreteFactory:具体的工厂角色,创建具体Product的子工厂,重写工厂方法以返回一个ConcreteProduct实例3. 工厂方法模式结构实现 Product.csusing System; using System.Collections.Generic; using System.Linq;

using System.Text;namespace

DesignPatterns.FactoryMethodPattern.Structural {

/// <summary>

/// 定义Product抽象类,Client调用Product抽象类,并由Factory来创建具体类。 /// </summary>

public abstract class Product { }

} ConcreteProductA.csusing System; using System.Collections.Generic; using System.Linq;

using System.Text;namespace

DesignPatterns.FactoryMethodPattern.Structural {

public class ConcreteProductA : Product { }

} ConcreteProductB.csusing System; using System.Collections.Generic; using System.Linq;

using System.Text;namespace

DesignPatterns.FactoryMethodPattern.Structural {

public class ConcreteProductB : Product

{ }

} Factory.csusing System; using System.Collections.Generic; using System.Linq;

using System.Text;namespace

DesignPatterns.FactoryMethodPattern.Structural {

public abstract class Factory {

public abstract Product CreateProduct(); }

} ConcreteFactoryA.csusing System; using System.Collections.Generic; using System.Linq;

using System.Text;namespace

DesignPatterns.FactoryMethodPattern.Structural {

public class ConcreteFactoryA : Factory {

public override Product CreateProduct() {

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

C#设计模式系列:工厂方法模式(Factory Method) 1. 工厂方法模式简介 1. 工厂方法模式简介1.1 定义 工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式是以一个类的实例化延迟到其子类。 Factory Method模式用于在不指定待创建对象的具体类的情况下创建对象。 Factory Method模式的主要意图是隐藏对象创建的复杂性。Client通常不指定要创建的具体类,Client将面向接口或抽象类进行编码,让Factory类负责创建具体的类型。通常Factory类有一个返回抽象类或者接口的静态方法。Client通常提供某种信息让Factory类使用提供的信息来确定创建并返回哪个子类。 将创建子类的责任抽象出来的好处是允许Client完全无需考虑依赖类是如何创建的,这遵守依赖

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com