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

【设计模式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.xgzjz.com/news/37.html

相关文章:

  • Linux——自制shell命令行解释器
  • 昇腾310P软件安装说明
  • 从 “能用“ 到 “好用“:中小制造企业数字化转型中的 IT 系统优化管理策略
  • Flink框架:keyBy实现按键逻辑分区
  • wordle game(猜词游戏)小demo【react + ts】
  • 第十八节:第八部分:java高级:动态代理设计模式介绍、准备工作、代码实现
  • 2025年终端安全管理系统的全方位解析,桌面管理软件的分析
  • 大模型——Prompt 优化还是模型微调
  • 图立得-html纯前端图片拾色器V202507
  • 常见问题一
  • 关于JavaWeb的总结笔记
  • Three.js实现银河流光粒子星空特效原理与实践
  • WebAPIs事件流与事件委托与其他事件
  • 三大工厂设计模式
  • React-useEffect的闭包陷阱(stale closure)
  • 前端,demo操作,增删改查,to do list小项目
  • Spring Boot 3企业级架构设计:从模块化到高并发实战,9轮技术博弈(含架构演进解析)
  • numpy库的基础知识
  • Pandas - JSON格式数据操作实践
  • 车载软件架构 --- 软件开发面临的问题
  • 论文Review Lidar 3DGS Splat-LOAM: Gaussian Splatting LiDAR Odometry and Mapping
  • Vue过度与动画效果
  • Kafka 如何优雅实现 Varint 和 ZigZag 编码
  • 低代码平台买saas好还是私有化好
  • Python 模块未找到?这样解决“ModuleNotFoundError”
  • Java学习----NIO模型
  • 19.TaskExecutor与ResourceManager建立连接
  • 部署 Zabbix 企业级分布式监控
  • 2x2矩阵教程
  • 一个适合MCU的分级菜单框架