意义
定义一个用于创建对象的接口,但是由子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。
好处
与简单工厂相比较,克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。
具体实现
image.png
实现代码
public abstract class Factory {
abstract public Product create();
}
public class FactoryChild1 extends Factory {
@Override
public Product create() {
return new ProductChild1();
}
}
public class FactoryChild2 extends Factory {
@Override
public Product create() {
return new ProductChild2();
}
}
public abstract class Product {
public abstract void use();
}
public class ProductChild1 extends Product {
@Override
public void use() {
}
}
public class ProductChild2 extends Product {
@Override
public void use() {
}
}