工厂方法模式抽象创建者 多个具体创建者子类工厂加产品新建子类不改老代码。抽象创建者作为各个子类工厂的父类负责提供通用容器逻辑预留抽象工厂方法作为子类的模版。子类工厂重写工厂方法创建属于自己的同类型产品各个建立者之间相互独立互不干扰。新增一套产品组合只新增一个子类即可原有代码不动。举例游戏技能书。抽象创建者 SkillBook 提供技能书模板技能列表容器子类创建者FireSkillBook、IceSkillBook重写工厂方法向列表填充技能。A 技能书技能 1、2、3B 技能书技能 1、3、4两套互相独立不会互相影响。新增一种技能书新建一个 SkillBook 子类即可。using NUnit.Framework; using System.Collections.Generic; using UnityEngine; public class FactoryMethodPatternExample3 : MonoBehaviour { // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { SkillBookFactory[] skillBookFactories new SkillBookFactory[3] { new FireSkillBookFactory(), new LightningSkillBookFactory(), new RandomSkillBookFactory() }; foreach (var skillBookFactory in skillBookFactories) { Debug.Log($Skill Book Factory: {skillBookFactory.GetType().Name}); foreach (var skill in skillBookFactory.Skills) { Debug.Log($Skill: {skill.GetType().Name}); } } } // Update is called once per frame void Update() { } } abstract class Skill { } class FireBall : Skill { } class FireStorm : Skill { } class FireWall : Skill { } class LightningBolt : Skill { } class LightningStorm : Skill { } abstract class SkillBookFactory { ListSkill _skills new ListSkill(); public ListSkill Skills { get { return _skills; } } public abstract void CreateSkills(); public SkillBookFactory() { CreateSkills(); } } class FireSkillBookFactory : SkillBookFactory { public override void CreateSkills() { Skills.Add(new FireBall()); Skills.Add(new FireStorm()); Skills.Add(new FireWall()); } } class LightningSkillBookFactory : SkillBookFactory { public override void CreateSkills() { Skills.Add(new LightningBolt()); Skills.Add(new LightningStorm()); } } class RandomSkillBookFactory : SkillBookFactory { public override void CreateSkills() { Skills.Add(new FireBall()); Skills.Add(new LightningBolt()); } }
企业数字化 ERP 产品动态
相关推荐
WinSCP SFTP 教程:Windows 下安全稳定的跨系统文件传输方案 1. 为什么现在还要学 WinSCP?——它不是“老古董”,而是 Windows 下最稳的 SFTP 通道WinSCP 这个名字,对很多刚接触服务器运维、开发部署或文件协同的同学来说,可能带着点“复古感”:界面不算炫酷,图标还是… · 2026/9/24 20:15:41
MySQL数据类型选型实战:从底层存储到性能优化的关键指南 很多刚接触MySQL的朋友,都会把数据类型当成建表时的填空题,觉得“能用就行”。但实际干几年你就会发现,数据类型选得对不对,直接决定了这张表三年后是跑得飞快还是慢成PPT。我接手过一个历史项目,一张不到一千万行的订… · 2026/9/24 20:15:41
多智能体系统多样性坍塌:机制、危害与十个对抗策略 1. 从“群体智慧”到“集体失明”:多样性坍塌到底是什么 你让三个Agent一起去修一个线上bug,它们讨论得热火朝天,结果一小时后提交的补丁一模一样,还是错的那个。你让五个Agent为新产品起名,以为能收到五十个创意&… · 2026/9/24 20:15:41
若依微服务上云选型:ECS与轻量服务器的本质差异 1. 云主机选型不是挑配置,而是匹配业务生命周期“云主机怎么选?”——这问题每天在技术群、运维论坛、创业公司会议室里被问上百遍。但绝大多数人一开口就掉进陷阱:先看CPU核数、内存大小、带宽多少,再比价格,最后拍板… · 2026/9/24 21:46:09
JSP+SQL Server购物车实战:从零搭建可上线的Java Web基础项目 简介:这是一份面向Java Web初学者与高校课程设计者的JSPSQL Server购物车实战项目资源,聚焦电商核心功能实现,帮助学习者掌握动态网页开发、数据库交互及前后端协同逻辑。资源共35个文件,包含10个JSP页面(如login.jsp、… · 2026/9/24 21:46:09
C4指挥系统是什么:从C2到C4ISR,解析军事信息系统的“大脑”架构 我第一次听到“C4指挥系统”这个名字时,脑子里冒出来的是炸药——C4。后来才发现,在军工信息化领域,这四个字母不是炸药型号,而是指挥(Command)、控制(Control)、通信(Co… · 2026/9/24 21:46:09
C语言查找算法对比:顺序、二分、哈希与二叉搜索树选型指南 顺序查找、二分查找、哈希查找,这几个词在C语言学习里出现的频率,差不多和printf("hello world")一样高。但说句实话,很多人学完这些算法,能在考试里算出时间复杂度,却在真正写代码时不知道该用哪个。更常见… · 2026/9/24 21:46:09
Cheat Engine 工程化玩法:Lua脚本、CT表与断点调试实战 很多人把 Cheat Engine(CE)当成“单机游戏改数值工具”:附加进程、搜数值、改成 9999,完事。我自己也是从这条路入门的,但用着用着发现,CE 真正值钱的地方是它内置的那套动态调试环境:Lua 脚本、… · 2026/9/24 21:46:09
ComfyUI本地接入MiniMax H3视频生成实战指南 1. 项目概述:这不是又一个“一键启动”噱头,而是真正能跑通 H3 视频生成的本地化实践路径最近在几个AI视频开发群和本地部署交流频道里,几乎每天都有人问:“MiniMax H3 能不能本地跑?”“ComfyUI 里怎么加 H3 节点&… · 2026/9/24 21:45:56
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44