依赖注入模式

依赖注入模式

客户端类等待注入器创建其依赖的服务类的对象并将其赋值给自身的成员变量;

依赖注入意义

保证客户类仅仅与其依赖的服务类耦合,而不与服务类的子类型耦合,使得程序符合OCP或依赖于抽象类型原则;


不需声明全局公共的服务类对象,而是通过 依赖注入(伸手-等待)来获取:

1,在接受注入时声明所依赖的服务对象(伸手);

2,框架会在初始化时将对象传递进来(等待)。


注入方式

1,构造器注入

Client类提供构造器public Client(IServer s),优点是创建Client对象时,确保IServer对像被初始化;

2,Setter注入

Client类提供方法如set IServer(IServer s),优点是可以灵活的要求外界完成注入;

3,接口注入

应用于有大量的Client类都需要依赖于IServer时;


构造注入器

因为注入器通常使用反射机制创建对象,作为通用工具,因此简单构造器可以设计为下层包中的一个工具类:

  1. public class App{
  2.     public static void test(){  
  3.          IServer s = (IServer) God.create();
  4.          Client c = new Client();  
  5.          c.setIServer(s);    
  6.          c.show();  
  7.     }  
  8. }  

更为强大的依赖注入容器如Spring、PicoContainer等,它们认为使用依赖注入是面向对象编程基本的程序结构,因此其中各种各样的使用关系广泛存在。


其他

依赖注入模式、依赖注入容器、设计依赖注入容器所需的技术(回调机制或控制反转)可以是三个不同的东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值