控制反转的优点在于它将对象与特定查找机制和它所依赖的对象的实现分离。因此,生产应用程序和测试都可以获得更大的灵活性。
实际上是什么意思?
答案 0 :(得分:0)
IoC的一个很好的例子是数据库模拟。在编写应用程序时,可能需要保留对象以便在以后的某个时间进行检索或使用。好吧,要抽象出数据库,可以使用如下方法创建一个接口:
Interface DbSaver
+void save( MyObject myObject )
+MyObject load( String id )
如果没有IoC,你会有类似的东西:
DbSaver saver = new DefaultDbSaver();
或者,您只需定义一个实现,并将其作为单例访问(最初似乎适用于数据库操作对象):
MyDbSaver saver = MyDbSaver.getInstance();
使用IoC,您甚至可以在不重新编译应用程序的情况下切换DbSaver的实现(至少Spring提供了这个)。也就是说,无需更改任何代码,您可以选择使用一种实现而不是另一种实现。对于数据库访问对象,最常见的事情是创建一个将所有内容存储在内存中的默认实现。在最终确定数据库设计,结构或技术时,您可以继续构建应用程序,而无需担心数据的持久性。你只需在界面中工作。
通过这种方式,业务对象与数据库集成分离,这具有允许两个部分并行开发的巨大好处。