技术经验分享:C#设计模式

简介: 技术经验分享:C#设计模式

"

一.介绍  

  简单工厂模式(Simple Factory Pattern)又叫静态工厂方法(Static Factory Method)模式。它属于创建型模式,但它不属于23种设计模式的一种。简单来说,它的作用就是将类的实例化交给一个工厂类去执行。

二.场景

  比如我们去水果店买水果,我们只要说出要买什么水果,水果店就会给我们什么水果。这里的水果店相当于一个工厂类,我们买水果就相当于new一个水果类,去水果店买水果就是交给水果店去new水果类,这可以降低我们对水果类对象的依赖,要什么类都交给工厂类去创建。

三.实现

  定义父类接口IFruit(水果)。

public interface IFruit

{

public string Name { get; set; }

}

  子类继承水果接口。

public class Apple : IFruit

{

public string Name { get; set; } = ""苹果"";

}

public //代码效果参考:https://v.youku.com/v_show/id_XNjQwNjg1NTMyNA==.html

class Orange : IFruit

{

public string Name { get; set; } = ""橙"";

}

  定义工厂类,和负责实例化对应子类的静态方法。

public class Factory

{

public static IFruit CreateFruit(FruitType type)

{

switch (type)

{

case FruitType.Apple:

return new Apple();

case FruitType.Orange:

return new Orange();

default:

throw new Exception(""没有水果"");

}

}

}

public enum FruitType

{

//代码效果参考:https://v.youku.com/v_show/id_XNjQwMDQwMjI0NA==.html

Apple = 1,

Orange = 2

}

  根据不同参数去获取对应的实例。

public static void Main(string【】 args)

{

IFruit fruit = Factory.CreateFruit(FruitType.Apple);

Console.WriteLine(fruit.Name);

}

四.总结

  优点是,分离了实例的创建者和调用者,不让调用者直接去创建实例,而是通过工厂类去创建,明确了各自职责,有利于系统优化。

  缺点是,所有创建类的逻辑判断都放在工厂类中,如果需要创建新的类,那就只能去修改工厂类,这就违反了开闭原则,不应当修改底层类,应该通过拓展去加功能。

  所以,简单工厂模式一般是在需要创建的类不多的简单情况下使用。


"
image.png
相关文章
|
3月前
|
数据采集 存储 C#
C# 爬虫技术:京东视频内容抓取的实战案例分析
C# 爬虫技术:京东视频内容抓取的实战案例分析
|
10天前
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
|
9天前
|
人工智能 开发框架 安全
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
|
1月前
|
设计模式 安全 Java
C# 一分钟浅谈:设计模式之单例模式
【10月更文挑战第9天】单例模式是软件开发中最常用的设计模式之一,旨在确保一个类只有一个实例,并提供一个全局访问点。本文介绍了单例模式的基本概念、实现方式(包括饿汉式、懒汉式和使用 `Lazy<T>` 的方法)、常见问题(如多线程和序列化问题)及其解决方案,并通过代码示例详细说明了这些内容。希望本文能帮助你在实际开发中更好地应用单例模式,提高代码质量和可维护性。
33 1
|
2月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
1月前
|
人工智能 开发框架 C#
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
|
1月前
|
人工智能 开发框架 Cloud Native
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
|
1月前
|
存储 安全 算法
C#一分钟浅谈:数据加密与解密技术
【10月更文挑战第3天】在数字化时代,信息安全至关重要。数据加密作为保障信息不被未授权访问的有效手段,通过特定算法将明文转换为密文,确保即使数据被截获也难以解读。本文从基础概念入手,介绍C#中实现数据加密的方法,涵盖对称加密(如AES、DES)与非对称加密(如RSA),并通过具体示例代码演示如何使用`System.Security.Cryptography.Aes`类完成AES加密和解密过程。此外,还强调了密钥管理及安全策略的重要性。
55 4
|
1月前
|
负载均衡 网络协议 C#
C#实现WebSocket实时消息推送技术详解
C#实现WebSocket实时消息推送技术详解
42 1
|
1月前
|
数据可视化 NoSQL C#
C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)
C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)
下一篇
无影云桌面