ioc spring技术手册学习

来源:互联网 发布:gitv电视直播软件 编辑:程序博客网 时间:2024/04/27 18:28

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核心容器就提供了这样的配置管理的功能。

                                           

原创粉丝点击