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,如需转载请自行联系原作者

目录
相关文章
|
4月前
|
SQL 开发框架 数据可视化
企业应用开发中.NET EF常用哪种模式?
企业应用开发中.NET EF常用哪种模式?
|
17天前
|
数据库 开发者
.NET 异步编程之谜:async/await 模式究竟隐藏着怎样的神奇力量?
【8月更文挑战第28天】在当今注重效率和响应性的软件开发领域,.NET 的 async/await 模式如同得力助手,简化异步代码编写,使代码更易理解和维护。通过后台执行耗时操作,如网络请求和数据库查询,避免阻塞主线程,显著提升系统响应性。此模式不仅适用于网络请求,还广泛应用于数据库操作和文件读写。合理使用 async/await 可大幅优化性能,但需注意避免过度使用、正确处理调用链及异常,以确保系统稳定性和高效性。深入探索 async/await,助您构建更出色的应用程序。
34 0
|
29天前
|
敏捷开发 设计模式 开发者
【揭秘终极利器】AgileEAS.NET:服务定位器模式的魔法,如何让企业级软件开发瞬间提速?揭秘背后的技术奥秘与实战指南!
【8月更文挑战第16天】AgileEAS.NET是基于DotNet的企业级敏捷开发平台,其服务定位器模式助力构建高度解耦系统。通过全局服务目录动态查找服务,避免硬编码依赖。在AgileEAS.NET中,服务定位器以静态类形式封装服务注册与检索功能。示例展示了如何注册与获取服务实例,如在`UserController`中通过服务定位器使用`IUserService`。此模式整合到框架生命周期管理,便于各处获取服务实例,提升开发效率。然而,应适度使用并考虑依赖注入容器以增强代码可维护性和可测试性。
46 4
|
14天前
|
开发框架 监控 .NET
|
3月前
|
设计模式 存储 编译器
【.NET Core】异步编程模式
【.NET Core】异步编程模式
36 2
|
3月前
|
设计模式
设计模式-05建造者模式(Builder Pattern)
设计模式-05建造者模式(Builder Pattern)
|
4月前
|
设计模式 安全 Java
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)
该文介绍了一种C++的编程技巧——奇异递归模板模式(CRTP),旨在让派生组件能继承基本组件的特定功能。通过示例展示了如何创建一个`Fighter`接口和`MmaFighter`类,其中`MmaFighter`及其子类如`MmaBantamweightFighter`和`MmaHeavyweightFighter`强制类型安全,确保相同重量级的拳手之间才能进行比赛。这种设计避免了不同重量级拳手间的错误匹配,编译时会报错。CRTP适用于处理类型冲突、参数化类方法和限制方法只对相同类型实例生效的情况。
【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)
|
4月前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
38 1
|
4月前
|
敏捷开发 缓存 中间件
【专栏】解读.NET 技术的高效开发模式
【4月更文挑战第29天】本文探讨了.NET技术的高效开发模式,关键要素包括面向对象编程、良好架构设计和高效代码管理。通过实例展示了在企业级应用和Web应用开发中如何运用这些原则,强调了分层架构、微服务架构以及遵循编程规范和使用版本控制的重要性。文章旨在为开发者提供.NET开发的实用指南和灵感,促进软件开发效率与质量的提升。
27 0
|
7天前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
20 7