使用ioc创建对象的方式之三(通过工厂方法来创建:)

静态工厂:

UserFactory.java

package com.yikuan.factory;

import com.yikuan.vo.User;

public class UserFactory {
    public static User fangfa(String name){
        return new User(name);
    }
}

beans.xml:

<?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.xsd">
        <!-- bean就是java对象,由spring容器来创建和管理 -->
        <bean id="user" class="com.yikuan.factory.UserFactory" factory-method="fangfa">
            <constructor-arg index="0" value="孙六"></constructor-arg>
        </bean>
</beans>

动态工厂:

UserDynamicFactory.java

package com.yikuan.factory;

import com.yikuan.vo.User;

public class UserDynamicFactory {
    public User fangfa(String name){
        return new User(name);
    }
}

beans.xml

<?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.xsd">
        <!-- bean就是java对象,由spring容器来创建和管理 -->
        <bean id="userFactory" class="com.yikuan.factory.UserDynamicFactory"></bean>
        <bean id="user" factory-bean="userFactory" factory-method="fangfa">
            <constructor-arg index="0" value="孙六"></constructor-arg>
        </bean>
</beans>

以下是公共的代码

User.java

package com.yikuan.vo;

public class User {
    private String name;
    public User() {
        System.out.println("user的无参构造方法!");
    }
    public User(String name) {
        super();
        this.name = name;
    }
    public void show(){
        System.out.println("name:"+name);
    }
}

Test1.java

package com.yikuan.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.yikuan.vo.User;

public class Test1 {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
        User user = (User) ac.getBean("user");
        user.show();
    }
}

猜你喜欢

转载自www.cnblogs.com/yikuan-919/p/9503461.html