# design_pattern **Repository Path**: xuchang_21/design_pattern ## Basic Information - **Project Name**: design_pattern - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-14 - **Last Updated**: 2021-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 设计模式 ##开闭原则 定义:一个软件实体如类、模块和函数应该对外扩展开放,对修改关闭 用抽象构建框架,用实现扩展细节 优点:提供软件系统的可复用性及可维护性 ##依赖倒置原则 定义:高层模块不应该依赖低层模块,而这都应该依赖其抽象 抽象不应该依赖细节;细节应该依赖抽象 针对接口编程,不要针对实现编程 优点: 可以减少类间的耦合性、提高系统稳定性,提高代码可读性和可维护性,可降低修改 ##单一职责原则 定义:不要存在多于一个导致类变更的原因 一个类 / 接口 / 方法 只负责一项职责 优点:降低类的复杂度、提高类的可读性、提供系统的可维护性、降低变更引起的风险 ##接口隔离原则 注意适度原则,一定要适度 优点:符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性 ##迪米特原则 ###定义: 一个对象应该对其他对象保持最少的了解。又叫最少知道原则 尽量降低类与类之间的耦合 ###优点: 降低类之间的耦合 强调只和朋友交流,不和陌生人说话 朋友:出现在成员变量、方法中的输入、输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。 ##工厂方法 ###定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 ###类型: 创建型 ###适用场景: 创建对象需要大量重复的代码 客户端(应用层)不依赖与产品类实例如何被创建、实现等细节 一个类通过其子类来指定创建哪个对象 ###优点: 用户只需要关心所需产品对应的工厂,无需关心创建细节 加入新产品符合开闭原则,提高可扩展性 ###缺点: 类的个数容易过多,增加复杂度 增加了系统的抽象性和理解难度 ##建造者模式 ##单例模式 定义:保证一个类仅有一个实例,并提供一个全局访问点 类型:创建型 适用场景: 想确保任何情况下都绝对只有一个实例 优点: 在内存里只有一个实例,减少了内存开销 可以避免对资源的多种占用 设置全局访问点,严格控制访问 缺点: 没有接口,扩展困难 重点: 私有构造器 线程安全 延迟加载 序列化和反序列化安全