JAVA菜鸟学习日记——简单代码实现IOC控制反转

本文介绍了JAVA菜鸟在学习IOC(控制反转)过程中的理解,通过一个简单的代码示例阐述了IOC的概念,强调了解耦和模块化调试的优势。文中提到,这种思想在安卓开发中常见,例如使用按钮的匿名内部类实现。代码示例展示了如何定义被注入依赖的类以及对外接口,通过设置不同的实现类,实现了依赖对象的动态注入,展现了JAVA的多态特性。
摘要由CSDN通过智能技术生成

题记:纯菜鸟,也在慢慢学习中。博客更主要是为了博主自己日后回顾复习,当然也欢迎大家指正。


原来校招时候,面试各种JAVA后台的时候刷过一道题——


思考:写段代码实现控制反转

当时的感觉自然是一脸懵逼——额,我连题目都闹不明白呢,咋实现呢?


先说控制反转,面试的时候我应该会blabla地扯一大堆:

【我是答案,不标准但差不多是这个意思】所谓控制反转,就是由其他外部实体将原来控制主体需要的成员等信息生成好提供给他,而不再是简单地去持有依赖对象的引用。主体对原来的内部对象不再由其静态地了解,而是由外部实体将依赖对象注入或者说提供给这个主体。显然,主体只需要自己需要什么类型的成员就可以了,至于具体依赖的是谁,不需要自己知道。 为什么这么做呢?直观地一点就是充分解耦,注入的对象的生命周期不再由控制主体决定了。

当然解耦不是说没耦合,你毕竟用到了其余的对象,还是相互联系的,只是这种静态关系变成动态的了,因为是函数运行时候注入的嘛,原来可是没关系的。另一点就是更加利于模块化调试了。你用不到这个依赖对象的时候,依赖对象实现的代码理论上随便改,可以热插拔,具体用到的时候再去提供给他就好。


学习完了这周我易的课程之后,根据老师所讲的“控制反转”一节有了一点思路和新的认识:
核心思想在于正常控制的主体(假设是A)不具有具体实例
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IoC控制反转)是一种设计模式,它的目的是将程序中的控制权从代码中移出,使得程序更加灵活、可扩展和可维护。在IoC中,对象的实例化和依赖关系的解决不再由代码本身来完成,而是由一个容器来管理。 下面是使用伪代码实现IoC的例子: ```python class A: def __init__(self, b): self.b = b def do_something(self): self.b.do_something_else() class B: def do_something_else(self): print("doing something else!") def main(): b = B() a = A(b) # 将依赖关系注入到A中 a.do_something() main() ``` 上面的代码中,类A依赖于类B,即A的构造函数中需要传入B的实例。在传入实例时,A并不关心B的具体实现,只需要知道B具备一个do_something_else()方法即可。这种方式将依赖关系从代码中分离出来,使得程序更加灵活和可扩展。 现在,我们使用IoC容器来管理对象的实例化和依赖关系的解决,代码如下: ```python class A: def __init__(self, b): self.b = b def do_something(self): self.b.do_something_else() class B: def do_something_else(self): print("doing something else!") class IoCContainer: def __init__(self): self.dependencies = {} def register(self, name, dependency): self.dependencies[name] = dependency def resolve(self, name): return self.dependencies[name] def main(): container = IoCContainer() container.register("b", B()) # 将B的实例注册到容器中 a = A(container.resolve("b")) # 从容器中解析出B的实例并注入到A中 a.do_something() main() ``` 在上面的代码中,我们创建了一个IoC容器,用于管理对象的实例化和依赖关系的解决。在容器中,我们注册了B的实例,并将其命名为"b"。在A的构造函数中,我们使用容器的resolve()方法来解析出B的实例,并将其注入到A中。这种方式将依赖关系的解决交给了容器来管理,使得程序更加灵活和可维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值