功能模块化
eg:电脑零件
多用组合,少用继承。避免子类替换父类时,逻辑不一致的问题
1、针对于继承的方法,子类需要扩展最好是新写方法去调用,而不是重写修改逻辑;或者不继承,直接将需要的类注入进来去调方法
2、非要选择重写的话,父类就应该抽象,这样代码就无法实例化,也就不存在上述问题
eg:宝马停车
下层模块引入上层模块的依赖,改变了自上而下的依赖方向。面向接口编程
eg:mapper.xml—>mapper.dao
接口应该做到:尽量细化、高内聚、通过组装提供定制化服务
又叫迪米特法则。调用接口,无需关心接口的实现过程。现实中的业务隔离
eg:买电饭煲,不用知道电饭煲的工作原理
扩展功能应该是新加方法,而不是直接修改原有代码,要做到向下兼容。
eg:微服务中,对外提供的接口