简介
工厂模式是典型的解耦框架,即定义一个用于创建对象的接口,让对象来决定具体实现,上层只需要关注接口的调用即可,对具体实现可屏蔽。
分类
- 简单工厂模式(Simple Factory)
- 工厂方法模式(Factory Method)
- 抽象工厂模式(Abstract Factory)
简单工厂模式
public abstract class Tool {
public void create();
}
public class Tool1 extends Tool {
@Override
public void create() {
print("tool1");
}
}
public class Tool2 extends Tool {
@Override
public void create() {
print("tool2");
}
}
public class ToolFactory() {
public Tool createTool(String toolType) {
Tool tool = null;
switch (toolType) {
case "tool1":
tool = new Tool1();
break;
case "tool2":
tool2 = new Tool2();
break;
default:
break;
}
return tool;
}
}
Tool tool = ToolFactory.createTool("tool1");
tool.create();
工厂方法模式
public abstract class ToolFactory {
public Tool createTool();
}
public class Tool1Factory extends ToolFactory {
@Override
public Tool createTool() {
return new Tool1();
}
}
public class Tool2Factory extends ToolFactory {
@Override
public Tool createTool() {
return new Tool2();
}
}
Tool1Factory.createTool();
Tool2Factory.createTool();
抽象工厂模式
public abstract class ToolFactory {
public Tool createTool1();
public Tool createTool2();
}
public class Tool1Factory extends ToolFactory {
@Override
public Tool createTool1() {
return new Tool1();
}
@Override
public Tool createTool2() {
return new Tool2();
}
}
public class Tool2Factory extends ToolFactory {
@Override
public Tool createTool1() {
return new Tool1();
}
@Override
public Tool createTool2() {
return new Tool2();
}
}
Tool1Factory.createTool1();
Tool1Factory.createTool2();
Tool2Factory.createTool1();
Tool2Factory.createTool2();
总结
- 简单工厂模式:应用不多
- 工厂方法模式:通过创建子工厂的模式将原始工厂内的单一方法指向不同的实现,用户可通过不用的工厂类调用同一方法实现不同逻辑
- 抽象工厂模式:该模式可以实现工厂内多种方法的多种实现,在解耦方面做得最好,最具灵活性