1、Spring的实现原理和现实工厂原理是一样。可以理解成Spring就是一个大的工厂。

 

 

2、我先写一个简单工厂,然后再写一个Spring对比一下。

 

 

3、简单工厂例子如下:

      3.1、先写一个接口。

public interface Ren {
      public  void say();      }

 

     3.2、在写两个实现类。

public class Man implements Ren {
       public void say() {
       System.out.println("男人在说话!");
      }
  }  
       public class Woman implements Ren {
       public void say() {
       System.out.println("女人在说话!");
      }
  }

 

   3.3、写一个工厂类,主要用来得到类的实例,也就是初始化类。

           下面做了个判断,主要是在下面测试类里面用。

 

public class RenFactory {
      public static Ren getRenInstance(String s){
     Ren r=null;
     if(s=="W"){
      r=new Woman();
      }else if(s=="M"){
      r=new Man();
     }
  return r;
   }
  }

 

    3.4、写一个测试类,

           当输入“M”,会初始化Man;

            当输入“W”,会初始化Woman;

public class TestRen {
      public static void main(String[] args){
        Ren f=RenFactory.getRenInstance("M");//类名可以直接调用类里面的静态方法。
        f.say();
   }
}

 

所以:输出结果是“男人在说话”。

 

上面就是一个简单工厂的实现。

 

4、下面我用Spring实现上面的功能

 

    4.1、先写一个接口。

public interface Ren {
      public  void say();      }

     4.2、在写两个实现类。

public class Man implements Ren {
       public void say() {
       System.out.println("男人在说话!");
      }
  }  
       public class Woman implements Ren {
       public void say() {
       System.out.println("女人在说话!");
      }
  }

 

   4.3、Spring操作类的写法

      

import org.springframework.context.ApplicationContext;
       import org.springframework.context.support.ClassPathXmlApplicationContext; 
      public class TestRenSpring {
      public static void main(String[] args){
      ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
      Ren r=(Ren)context.getBean("w");
      r.say();
      }
  }

 

  4.4、Spring的配置文件的写法。

<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">


 

<bean id="w" class="org.Spring.com.Woman"></bean>
 
    <bean id="m" class="org.Spring.com.Man"></bean></beans>

        

 

  总结比较:相当于把工厂类换成了Spring的配置文件。这样写有什么好处吗?当然有了,今后要想改动就只改配置文件就可以了。不用动后台类了。这样更容易维护吧。

    TestRen与TestRenSpring测试类其实是,他们属于前台。有客户自己输入值。我们只修改配置文件就可以了。