# study-design-pattern **Repository Path**: tycaa/study-design-pattern ## Basic Information - **Project Name**: study-design-pattern - **Description**: 设计模式学习的一些例子 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-08 - **Last Updated**: 2022-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目介绍 该项目是学习设计模式的代码笔记 ## 软件开发的六大设计原则 **1、单一职责原则SRP:Single Responsibility Principle** ```bash 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 ``` **2、里氏替换原则LSP:Liskov Substitution Principle** ``` 定义:所有引用基类的地方必须能透明地使用其子类的对象。 要点:抽象化、面向接口编程 ``` **3、依赖倒置原则DIP:Dependence Inversion Principle** ``` 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 要点:面向接口编程,对变化的部分进行封装 ``` **4、接口隔离原则ISP:Interface Segregation Principle** ``` 定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 要点:细化接口,接口尽量小,方法尽可能少,接口专业化 ``` **5、迪米特法则LoD:Law of Demeter** ``` 定义:一个对象应该对其他对象保持最少的了解。一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。又称“最少知道原则Least Knowledge Principle”。 要点:低耦合,高内聚。 ``` **6、开闭原则OCP:Open Closed Principle** ``` 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 要点:软件开发、维护、升级的精髓,然而又是最模糊的理解点。围绕可扩展、可复用、可维护、弹性等出发点考虑。 ``` ## 常见的三大设计模式分类 ------ - **创建型模式** - 提供了一种在创建对象时同事隐藏创建对象逻辑的方式,使程序在创建对象时更加灵活。 ``` 常用:工厂模式、抽象工厂模式、单例模式、建造者模式 不常用:原型模式 ``` - **结构型模式** - 关注类和对象的组合,继承的概念被用来组合接口和定义组合对象获得新功能的方式 ``` 常用:适配器模式、桥接模式、装饰器模式、代理模式 不常用:组合模式、外观模式、享元模式 ``` - **行为型模式** - 特别关注对象之间的通信 ``` 常用:责任链模式、迭代器模式、观察者模式、状态模式、策略模式、模板模式 不常用:备忘录模式、命令模式 几乎不用:访问者模式、中介者模式、解释器模式 ```