依赖倒转原则(DIP):Dependency Inversion Principle,模块之间要依赖抽象,不依赖实现,要面向接口编程,不要面向实现编程。高层次模块不应该直接依赖低层模块,这样就降低了客户端与实现模块间的耦合。
UserAction依赖了具体的UserServicelmpl
Userservicelmpl依赖了具体的UserDaolmplForMySQL
目前来说:上是依赖下的。
凡是上依赖下的,都违背了依赖倒置原则。
什么叫做符合依赖倒置原则?什么叫做遵守依赖倒置原则?
上 不再 依赖 下 了。表示符合依赖倒置原则。
依赖倒置原则的核心是什么?
倡导面向接口编程,面向抽象编程,不要面向具体编程,
例如:
1.有个“Computer”类,与它关联的有“InterCpu”和“InterMemory”类,直接面向实现类编程,实现启动电脑
2.那现在这个程序的扩展性如何呢?如果我想给电脑配备AmdCpu,该如何实现?需要在实现类中去修改,有没有更好的办法?
3.创建两个接口,“Cpu”和“Memory”接口
4.使“Computer”类关联这两个接口
5.创建“InterCpu”和“AmdCpu”类,使其实现Cpu接口;创建“InterMemory”和“AmdMemory”类,使其实现Memory接口;
6.在“Test”类中就可以实现“AmdComputer”的功能
7.之后如还需改为“HuaweiComputer”,只需添加“HuaweiCpu”和8.“HuaweiMemery”,并在测试类中做修改即可。“Computer”类不需做任何变化