less than 1 minute read

定义:定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。【抽象类】——基于继承的代码复用技术

目的:允许定义不同的子步骤,同时维护基本过程的一致性

实现:

抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。

具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。

优点:

把不变的行为搬移到超类,去除了子类中的重复代码。

子类实现算法的某些细节,有助于算法的扩展。

符合“开放-封闭原则”。

缺点:

每个不同的实现都需要定义一个子类,这会导致类的个数的增加,设计更加抽象。

适用场景:

在某些类的算法中,用了相同的方法,造成代码的重复。

控制子类扩展,子类必须遵守算法规则。

模板方法和策略的区别是什么?

策略是模板方法的一种应用,或者子集;

Comments