迎接g20我来答文明:名词解释

来源:百度文库 编辑:九乡新闻网 时间:2024/04/19 06:50:13
IOC:
IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。
这就是IOC,将对象的创建和获取提取到外部。由外部容器提供需要的组件。依赖倒转原则即 Dependence Inversion Princinple,DIP。
Eric Gamma说,要面向抽象编程。面向接口编程是面向对象的核心。组件应该分为两部分,即Service, 所提供功能的声明Implementation, Service的实现好处是:多实现可以任意切换,防止 “everything depends on everything” 问题.即具体依赖于具体。
http://blog.csdn.net/lee576/archive/2008/04/16/2297451.aspx二、IOC的type    IoC的Type指的是Girl得到Boy的几种不同方式。我们逐一来说明。     IOC type 0:不用IOC  public class Girl implements Servicable {    private Kissable kissable;    public Girl() {
        kissable = new Boy();
    }    public void kissYourKissable() {
        kissable.kiss();
    }} 
      Girl自己建立自己的Boy,很难更换,很难共享给别人,只能单独使用,并负责完全的生命周期。     IOC type 1,先看代码:  public class Girl implements Servicable {    Kissable kissable;    public void service(ServiceManager mgr) {
        kissable = (Kissable) mgr.lookup(“kissable”);
    }    public void kissYourKissable() {
        kissable.kiss();
    }} 
      这种情况出现于Avalon Framework。一个组件实现了Servicable接口,就必须实现service方法,并传入一个ServiceManager。其中会含有需要的其它组件。只需要在service方法中初始化需要的Boy。    另外,J2EE中从Context取得对象也属于type 1。     它依赖于配置文件 
                 
      
   
   
 
      IOC type 2:     public class Girl {    private Kissable kissable;    public void setKissable(Kissable kissable) {
        this.kissable = kissable;
    }    public void kissYourKissable() {
        kissable.kiss();
    }} 
      Type 2出现于Spring Framework,是通过JavaBean的set方法来将需要的Boy传递给Girl。它必须依赖于配置文件。         
   
   
       
          
       

   

 
  IOC type 3  public class Girl {    private Kissable kissable;    public Girl(Kissable kissable) {
        this.kissable = kissable;
    }    public void kissYourKissable() {
        kissable.kiss();
    }} 
      这就是PicoContainer的组件 。通过构造函数传递Boy给Girl。   PicoContainer container = new DefaultPicoContainer();
container.registerComponentImplementation(Boy.class);
container.registerComponentImplementation(Girl.class);
Girl girl = (Girl) container.getComponentInstance(Girl.class);
girl.kissYourKissable(); 
      关于PicoContainer,作者后续文章会详细介绍。 作者语:       Well,以上的这些理论部分有些已经有了新的定义了。过些天我会再写一些文章具体说明。比如,原来的三种type结构现在已经重新定义为依赖注射的许多层次。IoC很年轻,还在发展。伴随着IOC的发展,AOP,COP,SOP等等都在不断的发展。作为程序员,随时关注着新的思想的发展是一件很轻松愉快的事情。有没有人愿意和我一起探讨学习共同进步呀! 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lee576/archive/2008/04/16/2297451.aspx