Net设计模式之简单工厂模式(Simple Factory Pattern)

简介:

一、简单工厂模式简介(Bref Introduction

        简单工厂模式( Simple Factory Pattern )的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖

二、解决的问题(What To Solve

        客户实例化对象时不需要关心该对象是由哪个子类实例化的。

三、简单工厂模式分析(Analysis

1、简单工厂模式结构

I Product 接口: 抽象产品类
ConcreteProduct :产品类的具体实现
Simple Factory 简单工厂类

四.实例分析(Example

1、场景

一个简单计算器,具有简单的加操作和减操作。结构 如下图所示
SimpleFactory : 简单工厂类。
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 、简单工厂类 SimpleFactory
///   <summary>
///   简单工厂类
///   </summary>
public  class SimpleFactory
{
    public static Operation CreateOperation(string operation)
    {
        Operation o = null;
 
        switch (operation)
        {
            case "+":
                o = new AddOperation();
                break;
            case "-":
                o = new SubOperation();
                break;
        }
        return o;
    }
}
 
3 、客户端代码
static  void Main(string[] args)
{
    Operation operation1 = SimpleFactory.CreateOperation("+");
    operation1.numberA = 10;
    operation1.numberB = 20;
    Console.WriteLine("{0}+{1}={2}", operation1.numberA, operation1.numberB, operation1.GetResult());
 
    Operation operation2 = SimpleFactory.CreateOperation("-");
    operation2.numberA = 10;
    operation2.numberB = 20;
    Console.WriteLine("{0}-{1}={2}", operation2.numberA, operation2.numberB, operation2.GetResult());
 
    Console.Read();
}
 

3、实例运行结果

 

五、总结(Summary

简单工厂模式是比较简单的一种设计模式,本文对此模式的概念及其设计结构图简单地进行了描述,最后以一个计算器的实例进行了说明。









本文转自 灵动生活 51CTO博客,原文链接:http://blog.51cto.com/smartlife/258932,如需转载请自行联系原作者

目录
相关文章
|
前端开发 .NET C#
ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程   ASP.NET Core MVC 设计模式 上一章节中,我们提到 ASP.NET Core 支持 MVC 开发模式,不知道大家对 MVC 设计模式是否了解,算了,不管了,本章节我们就来讲讲 MVC 设计模式吧。
2333 0
|
Java C# 设计模式
使用C# (.NET Core) 实现迭代器设计模式 (Iterator Pattern)
本文的概念来自深入浅出设计模式一书 项目需求 有两个饭店合并了, 它们各自有自己的菜单. 饭店合并之后要保留这两份菜单. 这两个菜单是这样的: 菜单项MenuItem的代码是这样的: 最初我们是这样设计的, 这是第一份菜单: 这是第2份菜单: 同时有两个菜单存在的问题 问题就是多个菜单把事情变复杂了.
1003 0
|
C#
使用C# (.NET Core) 实现命令设计模式 (Command Pattern)
本文的概念内容来自深入浅出设计模式一书. 项目需求 有这样一个可编程的新型遥控器, 它有7个可编程插槽, 每个插槽可连接不同的家用电器设备. 每个插槽对应两个按钮: 开, 关(ON, OFF).
821 0
|
Java C#
使用C# (.NET Core) 实现单体设计模式 (Singleton Pattern)
本文的概念内容来自深入浅出设计模式一书 由于我在给公司做内培, 所以最近天天写设计模式的文章.... 单体模式 Singleton 单体模式的目标就是只创建一个实例. 实际中有很多种对象我们可能只需要它们的一个实例, 例如: 线程池,缓存, 弹出的对话框, 用于保存设置的类, 用于logging的类, 硬件设备驱动对象等等.
1178 0
|
C#
使用C# (.NET Core) 实现抽象工厂设计模式 (Abstract Pattern)
本文的概念性内容来自深入浅出设计模式一书. 上一篇文章讲了简单工厂和工厂方法设计模式 http://www.cnblogs.com/cgzl/p/8760250.html, 使用的是披萨店的例子. 文将继续使用这个例子, 这里要用到抽象工厂.
1334 0
|
C# 设计模式 .NET
使用C# (.NET Core) 实现简单工厂(Simple Factory) 和工厂方法设计模式 (Factory Method Pattern)
本文源自深入浅出设计模式. 只不过我是使用C#/.NET Core实现的例子.   前言 当你看见new这个关键字的时候, 就应该想到它是具体的实现. 这就是一个具体的类, 为了更灵活, 我们应该使用的是接口(interface).
1402 0
|
测试技术 API C#
[搬运]在C#使用.NET设计模式的新观点
原文地址:http://www.dotnetcurry.com/dotnet/1092/dotnet-design-patterns 软件开发有许多设计模式。其中一些模式非常受欢迎。说几乎所有的模式都可以被接受,而不管我们选择的编程语言如何。
1042 0