zoukankan      html  css  js  c++  java
  • 1.Ioc&DI和Spring

    1.面向对象回顾和案例

       面向对象程序设计:1 2 3 4

       案例分析:

            需求分析:

         报表功能:
         报表服务类,检索数据,并生成图标
         报表生成器类,生成不同格式的报表文件,例如PDF格式、Html格式等

         实现一:以面向对象的方式实现Demo
         实现二:分离接口和实现
         优化目标:消除ReportService到ReportGenerator实现类之间的依赖关系

         实现三:

          采用容器:
          增加容器类:Container类
          所有组件由Container类管理

          分析:

             ReportService与ReportGenerator的具体实现解耦了

            选择不同的Generator不需要修改Service
          缺点:
              Container对所管理的所有组件产生了依赖
              ReportService对Container依赖,因为其封装有查找逻辑,所以在重用之前还要修改
         目标:
             去掉ReportService对Container依赖

         实现四:    

         使用服务定位器:
         服务定位器:ServiceLocator类
         封装查找逻辑
         对外公开查找组件(Generator)的方法     

         优点:
           应用服务定位器将查找逻辑从组件里分离出来
          降低组件在查找方面的复杂性
          增加组件的重用性
          这是用于查找资源的通用设计模式,并不局限于查找组件
             JavaEE中的应用,如:JNDI(Java命名和目录接口)
           局限
              组件需要知道如何查找资源

     2.IIoC和DI

       概念:  

       IoC(Inversion of Control,控制反转):
       设计原则,解耦组件之间的依赖关系

       DI( DI(Dependency Injection ,依赖注入):
       具体的设计模式,体现了IoC的设计原则
       因为DI是IoC最典型的实现,所以术语IoC与DI经常被混用

       应用IoC:

       

        应用IoC:
         好的获取资源的解决方案
         由容器主动将资源推送到它所管理的组件里,组件要有接受资源的方式
         查找的被动形式

        实现五:

        

        不需要服务定位器
        组件(ReportService)增加接受资源的方法(setter)
        由容器将组件(ReportGenerator)注入到另一个组件(ReportService)

        优点
         完全面向接口

     不同类型的依赖注入:

    主要有三种类型的DI
    接口注入(Type1 IoC)
    setter注入(Type2 IoC)
    构造器注入(Type3 IoC)
    流行程度最广的:setter注入
    有可能忘记注入,会抛出空指针
    代码安全有可能存在问题,依赖会被修改
    构造器注入
    可避免setter注入的一些缺点
    没有含义明确的方法名,对参数位置与数量有要求

    3.Spring框架简介

    4.Spring框架实现IoC

    Spring提供了IoC容器
    Beans均由Spring IoC容器
    来管理和组装

    Spring实例编码步骤:

    导入Spring相关Jar文件
    配置元数据
    编码实现功能,组件间用容器进行注入

    Spring示例:

    Bean是一个由Spring IoC容器进行实例化、装配和管理的对象
    Beans以及他们之间的依赖关系是通过容器使用配置元数据反应出来
    配置元数据:
    基于Xml的配置
    基于注解的配置
    基于Java的配置

  • 相关阅读:
    《完美应用ubuntu》之全面管理ubuntu软件源
    ubuntu下安装CAJ阅读器
    re正则表达式方法
    Xpath做数据解析
    C++异常处理
    异常处理
    指针与引用
    总结:开放透明的环境对于大数据团队的重要性
    java控制流
    3. 最小生成树
  • 原文地址:https://www.cnblogs.com/Firesun/p/9881768.html
Copyright © 2011-2022 走看看