技术经验分享: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
相关文章
|
30天前
|
数据采集 存储 C#
C# 爬虫技术:京东视频内容抓取的实战案例分析
C# 爬虫技术:京东视频内容抓取的实战案例分析
|
1天前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
1月前
|
设计模式 物联网 Android开发
移动应用与系统:探索未来技术的融合之路后端开发中的设计模式探索
【8月更文挑战第21天】随着科技的飞速发展,移动应用和操作系统已经成为我们日常生活中不可或缺的一部分。本文将深入探讨移动应用开发和移动操作系统的相关话题,包括它们的历史、现状以及未来的发展趋势。我们将从移动应用的开发环境、编程语言和工具等方面进行详细的分析,同时也会讨论移动操作系统的特点、优势以及面临的挑战。最后,我们将展望移动应用与系统在未来技术融合中的可能方向和机遇。
124 58
|
21天前
|
设计模式 C# 开发者
C#设计模式入门实战教程
C#设计模式入门实战教程
|
21天前
|
人工智能 开发框架 算法
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
|
21天前
|
传感器 应用服务中间件 Linux
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
|
21天前
|
人工智能 算法 C#
C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)
C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)
|
1月前
|
设计模式 算法 C#
C#设计模式之策略模式
C#设计模式之策略模式
75 19
|
28天前
|
图形学 C# 开发者
全面掌握Unity游戏开发核心技术:C#脚本编程从入门到精通——详解生命周期方法、事件处理与面向对象设计,助你打造高效稳定的互动娱乐体验
【8月更文挑战第31天】Unity 是一款强大的游戏开发平台,支持多种编程语言,其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用,涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例,展示如何编写有效的 C# 脚本,包括 Start、Update 和 LateUpdate 等生命周期方法,以及碰撞检测和类继承等高级技巧,帮助开发者掌握 Unity 脚本编程基础,提升游戏开发效率。
38 0
|
28天前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
73 0