15.工厂方法模式

2018-08-14  本文已影响0人  0x70e8

在模板方法模式中,在父类(抽象类)中定义流程,将具体实现交由子类实现,如果将模板方法模式用于生成实例对象,那么模板方法模式就衍生为工厂方法模式。

父类决定实例生成的方式,但是不决定实例的类型,具体的实现交给子类实现。

示例

public abstract class AbstractFactory {

    public AbstractProduct createInstance() {
        AbstractProduct instance = create();
        doSomeThing(instance);
        return create();
    }

    protected abstract AbstractProduct create();

    protected abstract void doSomeThing(AbstractProduct instance);
}

public abstract class AbstractProduct {

    public abstract void use();
}
public class CardFactory extends AbstractFactory {

    @Override
    protected AbstractProduct create() {

        return new Card();
    }

    @Override
    protected void doSomeThing(AbstractProduct instance) {
        System.out.println("nothing");
    }

}
public class Card extends AbstractProduct {

    @Override
    public void use() {
        System.out.println("use product card");

    }

}

public class Client {

    public static void main(String[] args) {
        AbstractFactory factory = new CardFactory();
        AbstractProduct card = factory.createInstance();
        card.use();
    }
}

总结

此模式是模板方法模式的应用。

上一篇 下一篇

猜你喜欢

热点阅读