ioc spring技术手册学习
2008-05-28 16:41
295 查看
BOB大叔书中依赖倒置原则:
1.高层模块不应该依赖低层模块,二者都应该依赖于抽象。
2.抽象不应该依赖于细节,细节应该依赖于抽象。
之所以称之为‘依赖倒置’是相对传统的过程式编程而言,依赖关系结构被倒置了。
public class Business{
private FloppyWriter writer = new FloppyWrite();
...
public void save{
...
Writer.save();
}
}
此时Business类就依赖于具体的低层模块FloppyWriter ,如果要改变存储介质为usb则必须修改Business。
介于“高层模块不应该依赖低层模块”,程序修改如下:
public interface DeviceWriter{
void save()
}
class UsbDeviceWrite implements DeviceWriter{
void save(){
...
//save to usb device;
}
}
class FloppyDiskWrite implements DeviceWriter{
void save(){
...
//save to floppy disk device;
}
}
public class Business{
private DeviceWriter writer = new FloppyWrite();
public void setDeviceWriter(DeviceWriter dw){
this.writer = dw;
}
...
public void save{
...
writer.save();
}
}
可以看到无论低层的存储如何变化,Business都不要修改。此时就是Business(高层模块)和UsbDeviceWrite 、FloppyDiskWrite(低层模块) 依赖于抽象(DeviceWriter接口)。您也可以编写一个配置管理程序,由xml或.property文件来更改配置,连setDeviceWriter方法都不要写。事实上spring核心容器就提供了这样的配置管理的功能。
1.高层模块不应该依赖低层模块,二者都应该依赖于抽象。
2.抽象不应该依赖于细节,细节应该依赖于抽象。
之所以称之为‘依赖倒置’是相对传统的过程式编程而言,依赖关系结构被倒置了。
public class Business{
private FloppyWriter writer = new FloppyWrite();
...
public void save{
...
Writer.save();
}
}
此时Business类就依赖于具体的低层模块FloppyWriter ,如果要改变存储介质为usb则必须修改Business。
介于“高层模块不应该依赖低层模块”,程序修改如下:
public interface DeviceWriter{
void save()
}
class UsbDeviceWrite implements DeviceWriter{
void save(){
...
//save to usb device;
}
}
class FloppyDiskWrite implements DeviceWriter{
void save(){
...
//save to floppy disk device;
}
}
public class Business{
private DeviceWriter writer = new FloppyWrite();
public void setDeviceWriter(DeviceWriter dw){
this.writer = dw;
}
...
public void save{
...
writer.save();
}
}
可以看到无论低层的存储如何变化,Business都不要修改。此时就是Business(高层模块)和UsbDeviceWrite 、FloppyDiskWrite(低层模块) 依赖于抽象(DeviceWriter接口)。您也可以编写一个配置管理程序,由xml或.property文件来更改配置,连setDeviceWriter方法都不要写。事实上spring核心容器就提供了这样的配置管理的功能。
相关文章推荐
- ioc spring技术手册学习
- 框架学习—Spring的IOC容器之注解方式与AOP技术
- 《spring 2.0技术手册》的技术写作方式值得学习!
- Spring技术内幕:SpringIOC原理学习总结
- SpringIOC技术学习---day1
- 技术文章 | Spring IoC 学习(3)
- spring技术手册阅读笔记(一 ) 认识IOC
- Spring技术内幕:SpringIOC原理学习总结
- spring源码学习之路---IOC初探(二)
- Spring3 学习笔记之(spring core 之IoC基础)
- 一站式SpringBoot for NoSQL Study Tutorial 开发教程学习手册
- Spring源码学习(一):IOC容器初始化
- Spring学习IoC控制反转(一)
- Spring 核心技术——IoC 简介
- Spring.Net学习 控制反转(IoC)和面向切面编程(AOP) (转)
- 啃啃老菜:Spring IOC核心源码学习(一)
- Spring 4.0 学习日记(1) --IOC 控制反转概念解释
- Spring学习笔记:IoC中的国际化
- 转:Spring技术内幕——深入解析Spring架构与设计原理(二)IOC实现原理
- Spring学习一:IOC(控制反转)和AOP(面向切面)的xml配置和注解方式