当前位置: 首页 > web >正文

【设计模式C#】简单工厂模式(用于简化获取对象实例化的复杂性)

一种创建型设计模式。

特点:解耦客户端和对象的创建,集中管理对象和易于拓展对象等等,但是由于若往系统里增加对象,则需要修改原有的工厂类,因此不符合开闭原则。

优点:

  1. 解耦客户端和具体的类;
  2. 集中管理,所有的对象创建都在工厂中管理和维护;
  3. 易于扩展,添加新对象时,不需要对客户端代码进行大规模修改;
  4. 使用简单工厂模式还可以让代码更加清晰。

缺点:

  1. 违反了单一职责原则,创建对象的逻辑被集中在了一个工厂类中,会导致类的职责过于复杂;
  2. 引入新的对象时,工厂类需要修改,不符合开闭原则。

适用场景:

  1. 需要让对象的创建变得简单;
  2. 不希望客户端关心具体的实现类;

using UnityEngine;public interface IAnimal
{void Speak();
}
public class Dog : IAnimal
{public void Speak(){Debug.Log("汪汪汪");}
}
public class Cat : IAnimal
{public void Speak(){Debug.Log("喵喵喵");}
}
/// <summary>
/// 生成动物的简单工厂
/// </summary>
public class AnimalFactory
{public static IAnimal CreateAnimal(string animalType){switch (animalType){case "dog":return new Dog();case "cat":return new Cat();default:Debug.Log("工厂中没有这种动物类");return null;}}
}
/// <summary>
/// 客户端
/// </summary>
public class Client
{public static void Main(string[] args){IAnimal dog = AnimalFactory.CreateAnimal("dog");dog.Speak();IAnimal cat = AnimalFactory.CreateAnimal("cat");cat.Speak();//创建失败,没有这样的类IAnimal rabbit = AnimalFactory.CreateAnimal("rabbit");rabbit.Speak();}
}
http://www.xdnf.cn/news/16015.html

相关文章:

  • 个人中心产品设计指南:从信息展示到用户体验的细节把控
  • mongodb源代码分析createCollection命令由create.idl变成create_gen.cpp过程
  • 在.NET Core API 微服务中使用 gRPC:从通信模式到场景选型
  • uniapp使用uni-ui怎么修改默认的css样式比如多选框及样式覆盖小程序/安卓/ios兼容问题
  • taro微信小程序的tsconfig.json文件说明
  • Hyperledger Fabric V2.5 生产环境部署及安装Java智能合约
  • 从env到mm_struct:环境变量与虚拟内存的底层实现
  • 来伊份养馋记社区零售 4.0 上海首店落沪:重构 “家门口” 的生活服务生态
  • Django实战:基于Django和openpyxl实现Excel导入导出功能
  • AWS IoT Core CloudWatch监控完整指南
  • 前端包管理工具深度对比:npm、yarn、pnpm 全方位解析
  • 【React】npm install报错npm : 无法加载文件 D:\APP\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
  • 宝塔面板Nginx报错: IP+端口可以直接从访问,反向代理之后就504了 Gateway Time-out
  • 使用 Strands Agents 开发并部署生产级架构通用型个人助手
  • 第三章自定义检视面板_创建自定义编辑器类_编扩展默认组件的显示面板(本章进度3/9)
  • 前端开发者快速理解Spring Boot项目指南
  • 解决mac chrome无法打开本地网络中的内网网址的问题
  • 电科金仓2025发布会,国产数据库的AI融合进化与智领未来
  • PPT科研画图插件
  • MCP协议解析:如何通过Model Context Protocol 实现高效的AI客户端与服务端交互
  • C++STL之stack和queue
  • Valgrind Memcheck 全解析教程:6个程序说明基础内存错误
  • SpringBoot的介绍和项目搭建
  • 基于有监督学习的主动攻击检测系统
  • Vision Transformer (ViT) 介绍
  • 以“融合进化 智领未来”之名,金仓Kingbase FlySync:国产数据库技术的突破与创新
  • Redis 概率型数据结构实战指南
  • C++ STL中迭代器学习笔记
  • Docker实践:使用Docker部署WhoDB开源轻量级数据库管理工具
  • AI大模型学习路线-全技术栈