zoukankan      html  css  js  c++  java
  • 依赖注入dependency injection

    首先说基于面向对象的以下两个设计原则,不能把所有事情封装到一个类中:

    • OCP原则,即开放关闭原则,指设计应该对扩展开放,对修改关闭。
    • 策略模式,英文名Strategy Pattern,指定义算法族,分别封装起来,让他们之间可以相互替换,此模式使得算法的变化独立于客户

    而应该创建客户类和服务类,客户类将引用服务类以接受具体的服务,而服务类可能有多种,所以客户类中最好引用的是众多服务类的一个接口类型的实例,通过接口实例实现具体服务方法的调用。

    该接口实例可以通过以下三种方法实现在客户类中的实例化(依赖注入):

    1. Setter模式

    通过一个客户类中的一个带参的set方法将服务类实例化后传入

    优点是灵活,客户类实例化后仍可改变服务类型,缺点是上下文中存在的set方法调用代码较多;

         2。Constructor模式

    通过客户类中的一个带参构造函数将服务类实例化后传入

    灵活度中等,每一个客户类实例有且只能有一种服务类型,即一旦实例化后服务类型不能再改变

         3。Factory模式

    客户类可以通过一个FactoryContainer类的静态方法主动获取需要服务类实例,具体有两种:

      • AbstractFactory,多种Factory继承该AbstractFactory接口,通过FactoryContainer的静态方法根据XML配置文件中的配置来选择生产哪一种服务类实例;
      • ReflectionFactory:直接根据XML配置文件中的配置通过反射机制来选择生产哪一种服务类实例;

    优点为上下文代码中完全不用再写为客户类进行依赖注入的代码,缺点为只能通过配置文件来调整具体的服务类型,适用于数据连接层(比如SQLServer,Oracle等数据库类型选择)

  • 相关阅读:
    【原创】【Android New Features】—— 关于ADT 17的BuildConfig.DEBUG
    《jQuery、jQuery UI及jQuery Mobile技巧与示例》勘误收集
    《jQuery UI开发指南》勘误收集
    获取输入框中选中文本相对于页面的偏移
    html标签对应的英文原文
    CSS选择器解析
    Input File 表单上传按钮美化
    常用CSS代码片断
    web前端开发框架搜集
    Fiddler
  • 原文地址:https://www.cnblogs.com/Finding2013/p/3012871.html
Copyright © 2011-2022 走看看