使用场景:需要初始化bean。bean有多个大分类,每个大分类下有多个小分类
1 创建大分类
public interface Super1 {
void method();
}
public interface Super2 {
void method();
}
2 创建每个大分类下的小分类
public class Son11 implements Super1{
@Override
public void method() {
System.out.println("son11");
}
}
public class Son12 implements Super1 {
@Override
public void method() {
System.out.println("son12");
}
}
public class Son21 implements Super2 {
@Override
public void method() {
System.out.println("son21");
}
}
public class Son22 implements Super2 {
@Override
public void method() {
System.out.println("son22");
}
}
3 创建抽象工厂类
public abstract class AbstractFactory {
public abstract Super1 getSuper1(String super1);
public abstract Super2 getSuper2(String super2);
}
4 创建每个大类的工厂类
public class Super1Factory extends AbstractFactory{
@Override
public Super1 getSuper1(String super1){
if("son11".equals(super1)){
return new Son11();
}else if ("son12".equals(super1)){
return new Son12();
}
return null;
}
@Override
public Super2 getSuper2(String super2){
return null;
}
}
public class Super2Factory extends AbstractFactory {
@Override
public Super1 getSuper1(String super1) {
return null;
}
@Override
public Super2 getSuper2(String super2) {
if ("son21".equals(super2)){
return new Son21();
}else if ("son22".equals(super2)){
return new Son22();
}
return null;
}
}
5 测试
public class Test {
public static void main(String[] args) {
//1 获得工厂类
AbstractFactory factory = Factory.getFactory("super1");
//2 获得bean
Super1 son11 = factory.getSuper1("son11");
son11.method();
}
}