作者chal ( )
看板Soft_Job
标题Re: [请益] Spring boot的依赖注入降低耦合的例子
时间Wed Apr 20 13:19:34 2022
比较早版本的spring 只能利用xml来依赖注入
其实反而比较好理解
spring 如果只有设定好xml的依赖注入
但是没有设好依赖反转(也就是宣告成介面)
那就会发现
当你要新增一个功能时 还是要去改动程式码
但如果宣告成介面
而流程也没有改变
但需要新功能时
其实只要新增一个实作,并改动xml
就能解决问题
这是最接近开闭原则
不修改软体 但可以扩展软体
类似任天堂换游戏就换卡匣的方式
修改xml 就是 把卡匣拔出来 换新卡匣
後面的spring 改成可以用注解跟设定档(config.java)的方式
反而会比较不好理解
因为都像是在改程式
补充一下任天堂的类比:
所有的游戏卡匣只要遵循卡匣介面实作几个方法
上 方法()
下 方法()
左 方法()
右 方法()
A 方法()
B 方法()
开始()
。。()
就能在任天堂主机里被使用(xml抽换卡匣)
但如果今天有一个卡匣硬是多了一个C按钮与C方法
而为了使生效,那就只能去修改任天堂主机(违反开闭原则)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.233.145.188 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1650431976.A.2D0.html
1F:→ superpandal: 老实说这是最差的 等同把xml当动态语言使用 资料交换 04/21 09:24
2F:→ superpandal: 格式当语言是很糟糕的 没有补全也难以除错 04/21 09:26
如果是怕xml打错 spring会提供基本的除错
最理想的设计情况 是只要新增calss 就能完成功能修改
程式主体完全不用动 测试上就少了很多
spring boot 比 spring 方便许多
但也因为他省略了很多设定 直接学spring boot会比较不好理解
其实spring 是用反射机制去xml找出class档 帮你new出来
所以也不一定要写在xml上
其他文字档理论上也可以(但可能就要自己写一套)
只是你如果注入是写在注解或config.java
很难去解释为什麽还是要去更动程式主体才能完成功能修改
但如果是写在xml或文字档
你就可以说 这次只要新增calss就能完成任务 不用动到程式
3F:→ netburst: 把xml换成json 接受度会不会高一点 04/21 12:04
json比xml更像资料 类似简化的xml
反而xml说是设定档 还比较可以接受
可以用config.java 但心里归类成xml
※ 编辑: chal (36.235.66.147 台湾), 04/21/2022 12:28:50
4F:→ superpandal: 我知道 但这样有不少缺点 json的话好一点但差不多 就 04/22 22:16
5F:→ superpandal: 说到这了 04/22 22:16