设计模式-行为型-模板模式

1 定义

- 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中去。

- 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

2 UML


3 代码实现

**抽象模板类**

public abstract class AbstractClass {

    public  void methondOne(){

        System.out.println("方法1");

    }

    public  void methondTwo(){

        System.out.println("方法2");

    }

    public final void TemplateMethod(){

        methondOne();

        methondTwo();

    }

}


**具体实现类A


public class ConcreteClass extends AbstractClass {

    @Override

    public  void methondOne(){

        System.out.println("具体方法1");

    }

    @Override

    public  void methondTwo(){

        System.out.println("具体方法2");

    }

}


具体实现类B


public class ConcreteClassB extends AbstractClass {

    @Override

    public  void methondOne(){

        System.out.println("具体B方法1");

    }

    @Override

    public  void methondTwo(){

        System.out.println("具体B方法2");

    }

}


测试类**


public class Main {

    public static void main(String[] args){

        AbstractClass abstractClass;

        abstractClass=new ConcreteClass();

        abstractClass.TemplateMethod();

        abstractClass=new ConcreteClassB();

        abstractClass.TemplateMethod();

    }

}


4 总结

4.1 优点:

1. 封装不变部分,扩展可变部分。

2. 提取公共代码,便于维护。

3. 行为由父类控制,子类实现。

4.2 缺点:

1. 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。

4.3 使用场景:

1. 有多个子类共有的方法,且逻辑相同。

2. 重要的、复杂的方法,可以考虑作为模板方法。

注意事项:为防止恶意操作,一般模板方法都加上 final 关键词。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容