# DesignPatterns **Repository Path**: hzhaiw/design-patterns ## Basic Information - **Project Name**: DesignPatterns - **Description**: 23种设计模式的学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-08 - **Last Updated**: 2026-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 23种设计模式的学习 一、工厂方法 https://www.bilibili.com/video/BV1o24kzNEH2?spm_id_from=333.788.videopod.sections&vd_source=e07cc8cc94eb22bd76722071b03cd199&p=11 优点: - 降低了客户端与具体产品之间的耦合度; - 促进了单一职责原则; - 促进了开闭原则; - 提高了更高的灵活性和可定制性; 缺点: - 复杂度增加; - 拥有的类越多,编写的测试类就越多,需要写的代码总量就越多,需要维护的代码也越多,接手后需要理解的代码也越多; 二、抽象工厂 https://www.bilibili.com/video/BV1QEJ9zBEtK/?spm_id_from=333.788.videopod.sections&vd_source=e07cc8cc94eb22bd76722071b03cd199 与工厂方法的区别: 工厂方法-工厂类只会创建一种产品; 抽象工厂-工厂类会创建至少2两种产品,并且这类产品有一定的关联关系(例如:电脑主机、鼠标、键盘) 工厂方法在我的业务上,一般比较少用(可能推送模块可以使用一下) 优点: - 关注点分离; - 灵活性(就案例游戏来说,可以随时可以加入一个新的关卡); - 确保产品之间的一致性(工厂只会创建只会协同工作的对象,例如关卡,创建的敌人、武器、增强效果都是跟关卡协同,符合关卡难度); 缺点: - 增加系统的复杂性(客户端没有直接的对象,是通过接口,层层间接调用到具体对象); - 会潜在的将多个产品耦合到一起(工厂至少创建2个可协同的产品,这些产品就潜在的耦合一起了); - 新增或修改产品会非常苦难(某种程度上,我们引入了更多的耦合,理解系统运作机制会比较困难);