Spring三种工厂设计模式:
1.构造方法创建对象
2.静态工厂创建对象
3.实例工厂创建对象
例子:
1.构造方法 1.1无参构造方法
1.2有参构造方法
2.静态工厂创建对象
2.1静态工厂类StaticFactory
public class StaticFactory {
public static Student creatStaticFactory(String name,String sex,String clazz){
return new Student(name,sex,clazz);
}
}
2.2工厂配置
3.实例工厂创建对象
3.1实例工厂类ExampleFactory
public class ExampleFactory {
public Student creatExampleFactory(String name, String sex, String clazz){
return new Student(name,sex,clazz);
}
}
3.2工厂配置
4.测试类和javaBean
public class MyTest {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
@Test
public void test(){
Student student = context.getBean("student", Student.class);
System.out.println(student);
}
@Test
public void test2(){
Student student2 = context.getBean("student2", Student.class);
System.out.println(student2);
}
@Test
public void text3(){
Student staticFactory = context.getBean("staticFactory", Student.class);
System.out.println(staticFactory);
}
@Test
public void text4(){
Student example = context.getBean("example", Student.class);
System.out.println(example);
}
}
javaBean
public class Student {
private String name;
private String sex;
private String clazz;
public Student() {
}
public Student(String name, String sex, String clazz) {
this.name = name;
this.sex = sex;
this.clazz = clazz;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getClazz() {
return clazz;
}
public void setClazz(String clazz) {
this.clazz = clazz;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", sex='" + sex + ''' +
", clazz='" + clazz + ''' +
'}';
}
}
小结:实例工厂是先创建了一个工厂并实例化,然后通过bean对象调用工厂里的相应方法;而静态工厂在bean容器开启的时候同样创建了一个工厂只不过是直接在其内部完成了相应的方法调用。


