随笔分类 -  01_设计模式_常用

摘要:建造者模式(Builder) 意图 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 UML 图 优点 封装性好:建造者模式将复杂对象的构建过程封装在具体的建造者中,客户端无需知道内部细节 构建与表示分离:将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示 易于 阅读全文
posted @ 2025-08-30 16:27 庞去广 阅读(14) 评论(0) 推荐(0)
摘要:抽象工厂模式 (Abstract Factory Pattern) 意图 提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 UML 图 优点 隔离了具体类的生成,使得客户端不需要知道什么被创建 当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对 阅读全文
posted @ 2025-08-29 08:39 庞去广 阅读(10) 评论(0) 推荐(0)
摘要:工厂方法(Factory Method) 意图: 定义一个创建对象的接口,但让子类决定实例化哪个类 UML图: 优点: 一个调用者想创建一个对象,只要知道其名称就可以了。 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 屏蔽产品的具体实现,调用者只关心产品的接口。 缺点: 每次增加一个产品 阅读全文
posted @ 2025-08-28 08:09 庞去广 阅读(13) 评论(0) 推荐(0)
摘要:单例模式 (Singleton Pattern) 意图: 确保一个类只有一个实例,并提供一个全局访问点。 UML图: 下面对饿汉式单例、懒汉式单例、懒汉式单例-双重检查锁、静态内部类式、枚举单例、注册式单例进行说明。 1. 饿汉式单例 (Eager Singleton) 实例在类加载的初始化阶段就已 阅读全文
posted @ 2025-08-27 15:49 庞去广 阅读(13) 评论(0) 推荐(0)
摘要:什么是设计模式 设计模式(Design Pattern)是软件设计中常见问题的典型解决方案。它们不是可以直接转换成代码的完整设计,而是解决特定问题的模板或描述,可以在多种不同情况下使用。 设计模式的主要特点: 经过验证的解决方案:是众多软件开发人员经过长期试验和错误总结出来的经验 通用可复用的方案: 阅读全文
posted @ 2025-08-26 08:15 庞去广 阅读(14) 评论(0) 推荐(0)
摘要:定义:也称最少知道原则,一个对象应该对其他对象有最少的了解 场景 还以人类为例,人类属性有姓名和年龄。另一个对象需要使用这两个属性。这里通过一个反例和一个正例来进行说明。 反例 InvalidHuman类 职责:表示一个人的基本信息 public class InvalidHuman{ // 姓名 阅读全文
posted @ 2025-08-25 23:15 庞去广 阅读(10) 评论(0) 推荐(0)
摘要:定义:优先使用对象组合/聚合,而不是继承来达到复用的目的 场景 还以人类为例,人类动作有吃饭、行走、跑、跳。前面都是几篇文章都是通过继承实现,这篇文章通过组合来实现。 LifeBehavior接口 职责:基础生命行为接口,定义了生物体的基本行为规范 public interface LifeBeha 阅读全文
posted @ 2025-08-22 00:04 庞去广 阅读(10) 评论(0) 推荐(0)
摘要:定义:高层模块不应该依赖低层模块,二者都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象 场景 以人类和机器人对象为例,人类和机器人共同的动作有吃饭、行走。 IHuman接口 职责:人类行为接口,定义了人类的基本行为规范 public interface IHuman { /** * 吃饭行为 * 阅读全文
posted @ 2025-08-19 20:26 庞去广 阅读(7) 评论(0) 推荐(0)
摘要:定义:客户端不应该被迫依赖它们不使用的接口 场景 这里还以人类对象为例,人类属性有年龄、名称,动作有吃饭、行走。运动员的动作有跑步、跳远。 反例 IHuman接口 职责:人类行为接口,定义了人类的基本行为规范 public interface IHuman { /** * 吃饭行为 */ void 阅读全文
posted @ 2025-08-18 19:05 庞去广 阅读(9) 评论(0) 推荐(0)
摘要:定义:子类必须能够替换它们的基类而不影响程序的正确性。这意味着: 子类必须保持父类的行为约定 子类不能加强前置条件或削弱后置条件 子类不能抛出父类未声明的异常 场景 这里还以人类对象为例,人类属性有年龄、名称,动作有吃饭、行走等。 BaseHuman类 职责:只处理人类基本属性和基本生存行为 稳定性 阅读全文
posted @ 2025-08-17 22:38 庞去广 阅读(5) 评论(0) 推荐(0)
摘要:定义:软件实体(类、模块、函数等)应该对扩展开放,对修改关闭 场景 这里还上一篇【单一职责原则】中人类对象为例,人类属性有年龄、名称,动作有吃饭、行走、唱歌、跳舞、飞行等。现在需要增加跑步、跳远等运动员具备的技能。 反例 /** * 人类类 * */ public class Human { // 阅读全文
posted @ 2025-08-16 21:57 庞去广 阅读(9) 评论(0) 推荐(0)
摘要:单一职责原则 定义:就一个类而言,应该只有一个引起它变化的原因 场景描述 设计一个人类对象,人类属性有年龄、名称,动作有吃饭、行走、唱歌、跳舞、飞行等。 反例 public class Human { // 年龄属性 private int age; // 姓名属性 private String n 阅读全文
posted @ 2025-08-15 08:50 庞去广 阅读(9) 评论(0) 推荐(0)
摘要:面向对象的设计原则 面向对象的设计原则是指导软件设计的核心思想,是设计模式背后的理论基础。遵循这些设计原则可以创建出更灵活、可维护和可扩展的软件系统。这些设计原则不仅指导代码组织方式,更影响着整个软件开发生命周期。 SOLID 原则(最核心的五大原则) 单一职责原则 (Single Responsi 阅读全文
posted @ 2025-08-14 14:54 庞去广 阅读(19) 评论(0) 推荐(0)