zoukankan      html  css  js  c++  java
  • 使用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();
        }
    }
  • 相关阅读:
    HDU4477 Cut the rope II 递推
    HDU4571 Travel in time 动态规划
    在VS2010中使用$err,hr快速查看当前GetLastError()的值
    对C语言的volatile关键字的理解
    三星S6D1121主控彩屏(240*320*18bit,262K)图形设备接口(GDI)实现
    C语言创建二叉树数据结构, 以及各种遍历
    Ubuntu下使用Dr.com宽带客户端上网的步骤
    8051单片机学习笔记/概要/总结/备忘
    联想笔记本电脑Ubuntu系统下触摸板的锁定
    [MSP430] 集成开发环境 IAR Embedded Workbench for MSP430 5.50
  • 原文地址:https://www.cnblogs.com/yikuan-919/p/9503461.html
Copyright © 2011-2022 走看看