java(OO)具备三大特性,封装、继承、多态。和面向过程相比,面向对象会把公共的逻辑进行封装,抽象为类。 工厂模式即提供一个工厂类,该工厂类根据类型进行实例化不同的对象,并且这些不同类型的对象具有同一个父类(继承), 借助多态使用该实例。
工厂类易于扩展,比如再增加一个子类,只需要添加子类并修改工厂类,不需要改动其他的子类
继承:
abstract class Parent{
public abstract void doSomething();
}
class Son1 extends Parent{
@Override
public void doSomething(){
System.out.println("son1");
}
}
class Son2 extends Parent{
@Override
public void doSomething(){
System.out.println("son2");
}
}
工厂类
class Factory{
public static Parent getInstance(String type){
Parent parent;
switch (type){
case "son1":
parent = new Son1();
break;
case "son2":
parent = new Son2();
break;
default:
throw new RuntimeException();
}
return parent;
}
}
使用
public class TestMain {
public static void main(String[] args) throws Exception{
Parent inst = Factory.getInstance("son2");
inst.doSomething();
}
}
UML