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 异步编程之谜:async/await 模式究竟隐藏着怎样的神奇力量?
【8月更文挑战第28天】在当今注重效率和响应性的软件开发领域,.NET 的 async/await 模式如同得力助手,简化异步代码编写,使代码更易理解和维护。通过后台执行耗时操作,如网络请求和数据库查询,避免阻塞主线程,显著提升系统响应性。此模式不仅适用于网络请求,还广泛应用于数据库操作和文件读写。合理使用 async/await 可大幅优化性能,但需注意避免过度使用、正确处理调用链及异常,以确保系统稳定性和高效性。深入探索 async/await,助您构建更出色的应用程序。
169 0
|
11月前
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
|
存储 NoSQL MongoDB
.NET MongoDB数据仓储和工作单元模式封装
.NET MongoDB数据仓储和工作单元模式封装
239 15
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
网络协议 大数据 网络架构
桥接模式和NET模式的区别
桥接模式和NET模式的区别
844 0
|
敏捷开发 设计模式 开发者
【揭秘终极利器】AgileEAS.NET:服务定位器模式的魔法,如何让企业级软件开发瞬间提速?揭秘背后的技术奥秘与实战指南!
【8月更文挑战第16天】AgileEAS.NET是基于DotNet的企业级敏捷开发平台,其服务定位器模式助力构建高度解耦系统。通过全局服务目录动态查找服务,避免硬编码依赖。在AgileEAS.NET中,服务定位器以静态类形式封装服务注册与检索功能。示例展示了如何注册与获取服务实例,如在`UserController`中通过服务定位器使用`IUserService`。此模式整合到框架生命周期管理,便于各处获取服务实例,提升开发效率。然而,应适度使用并考虑依赖注入容器以增强代码可维护性和可测试性。
276 4
|
开发框架 监控 .NET