Template Method(模板方法)---类行为型模式

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体的行为。

通过使用抽象操作定义一个算法中的一些步骤,模板方法确定了它们的先后顺序,但它允许子类改变这些具体步骤以满足它们各自的需求。

模板方法应用于下列情况:

1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。

2、各子类中公共的行为应被提取出来并集中到一个公共父类中避免代码重复。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。

3、控制子类扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展。

模板方法是一种代码复用的基本技术。它们在类库中尤为重要,它们提取了类库中的公共行为。、

模板方法导致一种反向的控制结构,这种结构有时被称为“好莱坞法则”,即“别找我们,我们找你”。这指的是一个父类调用一个子类的操作,而不是相反。

钩子操作(hook operations):它提供了缺省的行为,子类可以在必要时进行扩展。一个钩子操作在缺省操作通常是一个空操作。

定义模板方法的一个重要目的是尽量减少一个子类具体实现该算法时必须重定义的那些原语操作的数目。需要重定义的操作越多,客户程序就越冗长。

Factory Method模式常被模板方法调用。DoCreateDocument就是一个Factory Method,它由模板方法OpenDocument调用。

Strategy模式:模板方法使用继承来改变算法的一部分。Strategy模式使用委托来改变整个算法。

猜你喜欢

转载自linshiquan.iteye.com/blog/1070369