类的实例化----工厂模式

一.静态工厂:

    说明:工厂方法为static,直接生产对象实例 <!-- 静态化工厂的配置 -->


a.新建一个工厂类StaticFactoryDemo,维护一个获取日期对象的方法getCalendar

package com.jorian.demo;

import java.util.Calendar;

public class StaticFactoryDemo {

	public static Calendar getCalender(){
		return Calendar.getInstance();
		
	}
		
}

b.配置spring-factory.xml文件

	<!-- 静态化工厂的配置 -->
	<bean id="calendar1" class="com.jorian.demo.StaticFactoryDemo" factory-method="getCalender"/>	
	

c.新建测试类:

package com.jorian.test;

import java.util.Calendar;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class testfactory {

	@Test
	public void test05(){
		ApplicationContext app=new ClassPathXmlApplicationContext("/spring/factory.xml");
		//通过spring直接getBean
		Calendar a=(Calendar) app.getBean("calendar1");
		System.out.println("calendar1-----"+a);
		
	}
	
}

二,实例化工厂

说明:实例化工厂中的工厂方法是非静态的,需要先实例化工厂,在实例化对象

a.新建实例化工厂InstanceFactoryDemo

package com.jorian.demo;

import java.util.Calendar;

public class InstanceFactoryDemo {

	public Calendar getCalendar(){
		return Calendar.getInstance();
		
	}
		
}

b.配置pring-factory.xml文件

<!--实例化工厂配置  -->
	<bean id="factory" class="com.jorian.demo.InstanceFactoryDemo"/>
	<bean id="calendar2"   factory-bean="factory"  factory-method="getCalendar"/>
	

c.新建测试类

package com.jorian.test;

import java.util.Calendar;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class testfactory {

	@Test
	public void test05(){
		ApplicationContext app=new ClassPathXmlApplicationContext("/spring/factory.xml");
		
		Calendar b=(Calendar) app.getBean("calendar2");
		System.out.println("calendar1-----"+b);
		
		
	}
	
}

三,Spring工厂

扫描二维码关注公众号,回复: 2345861 查看本文章

a.新建spring工厂类

package com.jorian.demo;

import java.util.Calendar;

import org.springframework.beans.factory.FactoryBean;

public class SpringFactory implements FactoryBean<Calendar>{

	@Override
	public Calendar getObject() throws Exception {
		// spring工厂返回一个实例
		return Calendar.getInstance();
	}

	@Override
	public Class<?> getObjectType() {
		// 类型
		return Calendar.class;
	}

	@Override
	public boolean isSingleton() {
		// 是否单例
		return false;
	}


}

b.配置spring-factory.xml文件

	<!-- Spring工厂配置 -->
	<bean id="calendar3" class="com.jorian.demo.SpringFactory"/>

c.新建Spring工厂测试类

package com.jorian.test;

import java.util.Calendar;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class testfactory {

	@Test
	public void test05(){
		ApplicationContext app=new ClassPathXmlApplicationContext("/spring/factory.xml");
		
		Calendar a=(Calendar) app.getBean("calendar1");
		System.out.println("calendar1-----"+a);
		
		Calendar b=(Calendar) app.getBean("calendar2");
		System.out.println("calendar1-----"+b);
		
		Calendar c=(Calendar) app.getBean("calendar3");
		System.out.println("calendar1-----"+c);
		
	}}

如果测试类都能运行出日期,则正确:









猜你喜欢

转载自blog.csdn.net/weixin_38023579/article/details/80990426
今日推荐