比较早版本的spring 只能利用xml来依赖注入
其实反而比较好理解
spring 如果只有设定好xml的依赖注入
但是没有设好依赖反转(也就是宣告成接口)
那就会发现
当你要新增一个功能时 还是要去改动程式码
但如果宣告成接口
而流程也没有改变
但需要新功能时
其实只要新增一个实作,并改动xml
就能解决问题
这是最接近开闭原则
不修改软件 但可以扩展软件
类似任天堂换游戏就换卡匣的方式
修改xml 就是 把卡匣拔出来 换新卡匣
后面的spring 改成可以用注解跟设定档(config.java)的方式
反而会比较不好理解
因为都像是在改程式
补充一下任天堂的类比:
所有的游戏卡匣只要遵循卡匣接口实作几个方法
上 方法()
下 方法()
左 方法()
右 方法()
A 方法()
B 方法()
开始()
。。()
就能在任天堂主机里被使用(xml抽换卡匣)
但如果今天有一个卡匣硬是多了一个C按钮与C方法
而为了使生效,那就只能去修改任天堂主机(违反开闭原则)