6大设计原则
1. 单一职责原则
SRP(Single Responsiblity Principle)
核心定义:一个接口或者一个类或者一个方法,只负责一件事;
就像流水线生产,分工合作, 每个人只负责一件事情, 一个人不能负责太多事情, 否则效率低下,而且可能会出问题
在java程序中, 特别要注意接口的设计, 要遵循单一职责原则, 定义所有实现类通用的职责, 不能把实现类特有的职责放在接口上,否则所有实现类都会受到影响; 但要注意, 要根据业务合理划分责任, 过于细分,会导致类的数量非常庞大, 而且需要相互的耦合, 造成不必要的负责度
2. 里式替换原则
LSP(Liskov Substitution Principle)
核心定义:子类应该是可以替换父类,并且在所有使用父类的地方都能够换成子类;
在java中,子类必须完全实现父类的方法;父类出现的地方换成子类,程序依然能正常运行;子类可以在父类基础上增加新的行为.
3. 依赖倒置原则
DIP(Dependence Inversion Principle)
核心定义:就是面向接口(或抽象类)编程,各个模块之间不能直接进行依赖, 要通过接口的方式,使各个模块相互独立
在java中,每个类都尽量继承一个接口;依赖的变量尽量使用接口而不是实现类(比如service依赖dao层,在service接口定义中,只是用dao接口而不是dao实现类);如果基类是抽象类或类,且实现了一些方法,那么尽量不要覆写基类的方法;
4. 接口隔离原则
ISP(Interface Segregation Principle)
核心定义:接口的方法要少,类之间的关系要建立在最小接口上;这个单一职责要区分开, 单一职责讲的是类的业务功能单一
在java中体现为接口的拆分,接口方法尽量定义的少,不要定义没意义的接口
5. 开放封闭原则
OCP(Open Close Principle)
核心定义:一个模块的扩展性方面应该是开放的, 而在更改性方面应该是封闭的
一个网络模块, 原来只有服务端功能,现在要加入客户端功能,那么在不需要修改服务端代码的前提下, 就能扩展客户端, 这样就是前后端分离,在设计之初, 将服务端和客户端分开
6. 迪米特法则
LOD(Law Of Demter)
核心定义:一个类应该对自己需要耦合或者调用的类保持最少的了解,也就是低耦合,高内聚
类与类之间不能有过多的耦合,在系统设计时,不要让一个类依赖太多其他的类, 尽量减少依赖关系
设计模式概览
1. 创建型模式
用于描述”怎样创建对象”,它的主要特点是”将对象的创建与使用分离”
有单例,原型,工厂方法,抽象工厂,建造者 5种创造型模式
2. 结构型模式
用于描述”如何将对象按某种布局组成更大的结构”
有代理,适配器,桥接,装饰者,外观,享元,组合 7种结构型模式
3. 行为型模式
用于描述”类或对象之间怎么相互协作共同完成单个对象无法单独完成的任务,以及怎么样分配职责”
有模板方法,策略,命令,责任链,状态,观察者,中介者,迭代器,访问者,备忘录,解释器 11种行为型模式