Net设计模式实例之工厂方法模式( Factory Method Pattern)

简介:

一、工厂方法模式简介(Brief Introduction

工厂方法模式(Factory Method Pattern),定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类中。

二、解决的问题(What To Solve

       工厂方法模式较简单工厂模式,修改时关闭的,扩展时开放的,完全符合开放-封闭原则。工厂方法使一个类的实例化延迟到其子类中。

三、工厂方法模式分析(Analysis

1、工厂方法模式结构

Product抽象类,定义工厂方法所创建的对象接口。

ConcreteProduct实现类,具体的产品,实现Product接口。

Factory抽象类,声明工厂方法,该方法返回一个Product类型的对象。

ConcreteFactory,抽象工厂类Factory的具体实现,返回一个ConcreteProduct实例

四.实例分析(Example

1、场景

一个简单计算器,具有简单的加操作和减操作。结构如下图所示

 

Factory:抽象工厂方法类.

AddFactory:加法工厂

SubFactory,减法工厂.

Operation:抽象操作类

AddOperation:加法操作

SubOperation:减法操作

2、代码

1抽象操作类Operation及其具体实现类AddOperationSubOperation

/// <summary>

/// 抽象操作类

/// </summary>

public abstract class Operation

{

    public int numberA;

    public int numberB;

    public abstract int GetResult();

}

/// <summary>

/// 加法操作

/// </summary>

public class AddOperation : Operation

{

    public override int GetResult()

    {

       return (this.numberA + this.numberB);

    }

}

/// <summary>

/// 减法操作

/// </summary>

public class SubOperation : Operation

{

    public override int GetResult()

    {

        return (this.numberA - this.numberB);

    }

}

 

2、抽象工厂类Factory及其具体工厂类AddFactorySubFactory

public abstract class Factory

{

    public abstract Operation CreateOperation();

}

 

public class AddFactory : Factory

{

    public override Operation CreateOperation()

    {

        return new AddOperation();

    }

}

 

public class SubFactory:Factory

{

    public override Operation CreateOperation()

    {

        return new SubOperation();

    }

}

 

3、客户端代码

static void  Main (string[] args)

{

    Console.WriteLine("使用工厂方法进行计算");

    Factory factory1 = new AddFactory();

    Operation operation1= factory1.CreateOperation();

    operation1.numberA = 10;

    operation1.numberB = 20;

    Console.WriteLine("{0}+{1}={2}", operation1.numberA, operation1.numberB, operation1.GetResult());

 

    Factory factory2 = new SubFactory();

    Operation operation2 = factory2.CreateOperation();

    operation2.numberA = 10;

    operation2.numberB = 20;

    Console.WriteLine("{0}+{1}={2}", operation2.numberA, operation2.numberB, operation2.GetResult());

    Console.Read();

}

3、实例运行结果

五、总结(Summary

本文对工厂方法模式(Factory Method Pattern)的概念及其设计结构图简单地进行了描述,同样也以一个计算器的实例进行了说明,工厂方法模式较简单工厂模式,修改时关闭的,扩展时开放的,完全符合开放-封闭原则.



本文转自灵动生活博客园博客,原文链接:http://www.cnblogs.com/ywqu/archive/2010/01/07/1640855.html ,如需转载请自行联系原作者


相关文章
|
7月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
1621 2
|
12月前
|
设计模式 Java 数据库连接
【设计模式】【创建型模式】工厂方法模式(Factory Methods)
一、入门 什么是工厂方法模式? 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类决定实例化哪个类。工厂方法模式使类的实例化延迟
328 16
|
12月前
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
610 26
|
SQL 缓存 开发框架
分享一个 .NET EF6 应用二级缓存提高性能的方法
分享一个 .NET EF6 应用二级缓存提高性能的方法
242 0
|
设计模式 Java 关系型数据库
设计模式:工厂方法模式(Factory Method)
工厂方法模式是一种创建型设计模式,通过将对象的创建延迟到子类实现解耦。其核心是抽象工厂声明工厂方法返回抽象产品,具体工厂重写该方法返回具体产品实例。适用于动态扩展产品类型、复杂创建逻辑和框架设计等场景,如日志记录器、数据库连接池等。优点包括符合开闭原则、解耦客户端与具体产品;缺点是可能增加类数量和复杂度。典型应用如Java集合框架、Spring BeanFactory等。
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
设计模式 关系型数据库
「全网最细 + 实战源码案例」设计模式——工厂方法模式
简单工厂模式是一种创建型设计模式,通过一个工厂类根据传入参数创建不同类型的产品对象,也称“静态工厂方法”模式。其结构包括工厂类、产品接口和具体产品类。适用于创建对象种类较少且调用者无需关心创建细节的场景。优点是封装性强、代码复用性好;缺点是扩展性差,增加新产品时需修改工厂类代码,违反开闭原则。
246 15
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
设计模式 XML 存储
【二】设计模式~~~创建型模式~~~工厂方法模式(Java)
文章详细介绍了工厂方法模式(Factory Method Pattern),这是一种创建型设计模式,用于将对象的创建过程委托给多个工厂子类中的某一个,以实现对象创建的封装和扩展性。文章通过日志记录器的实例,展示了工厂方法模式的结构、角色、时序图、代码实现、优点、缺点以及适用环境,并探讨了如何通过配置文件和Java反射机制实现工厂的动态创建。
【二】设计模式~~~创建型模式~~~工厂方法模式(Java)