模板方法设计模式是控制反转的一个例子吗?

时间:2014-05-16 03:43:20

标签: design-patterns inversion-of-control

最近在接受采访时,我正在解释我曾参与过的框架。我说我们通过使用模板方法设计模式提供可扩展性来创建控制反转。我说这是一个控制反转的例子,我们的框架调用框架用户实现的方法,面试官说模板方法设计模式不是IOC的一个例子。我想知道我对IOC的理解是否不正确?

2 个答案:

答案 0 :(得分:6)

你的面试官错了。模板方法模式确实使用控制反转。事实上,维基百科条目特别提及它。

http://en.wikipedia.org/wiki/Template_method_pattern

  

模板方法用于框架中,每个框架实现域架构的不变部分,留下"占位符"用于自定义选项。这是控制反转的一个例子,也称为好莱坞原则。

不幸的是,您要么没有理解IoC或模板方法模式,要么向他们解释为什么它是IoC的一个例子。不幸的是,许多人似乎认为IoC意味着依赖注入,这就是它。

答案 1 :(得分:0)

是的,模板模式是IOC的一个示例,并且可以使用Template模式以及一些其他技术(DI等)来实现IOC。在继承中,子类从父类中调用方法,但是使用模板模式,我们使用基类中的最终方法实现定义算法(子类无法更改的步骤顺序),如下面提到的示例(Base / Parent类)所示是将在子类中定义的调用方法,因此控制权被反转,而基类则控制核心算法,因此这就是在这种情况下实现IOC的原因和所在。

示例-假设我们需要处理文件。

public abstract class FileProcessor {
    public final void processFile() {
        preProcess();
        process();
        postProcess();
    }

    public abstract void preProcess();
    public abstract void process();
    public abstract void postProcess();
}
相关问题