• 设计模式-行为型模式-模版方法模式


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

    模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。

     

    1. //首先,我们定义一个抽象类AbstractClass,它包含了一个模版方法templateMethod和一些抽象方
    2. //法primitiveOperation1和primitiveOperation2:
    3. public abstract class AbstractClass {
    4. // 模版方法
    5. public final void templateMethod() {
    6. System.out.println("执行步骤 1:");
    7. primitiveOperation1();
    8. System.out.println("执行步骤 2:");
    9. primitiveOperation2();
    10. }
    11. // 抽象方法,由子类实现
    12. protected abstract void primitiveOperation1();
    13. // 抽象方法,由子类实现
    14. protected abstract void primitiveOperation2();
    15. }
    16. //然后,我们创建两个子类ConcreteClassA和ConcreteClassB,它们分别实现了抽象类中的抽象方法:
    17. public class ConcreteClassA extends AbstractClass {
    18. @Override
    19. protected void primitiveOperation1() {
    20. System.out.println("具体类 A 的步骤 1 实现");
    21. }
    22. @Override
    23. protected void primitiveOperation2() {
    24. System.out.println("具体类 A 的步骤 2 实现");
    25. }
    26. }
    27. public class ConcreteClassB extends AbstractClass {
    28. @Override
    29. protected void primitiveOperation1() {
    30. System.out.println("具体类 B 的步骤 1 实现");
    31. }
    32. @Override
    33. protected void primitiveOperation2() {
    34. System.out.println("具体类 B 的步骤 2 实现");
    35. }
    36. }
    37. //最后,我们编写客户端代码来演示如何使用模版方法模式:
    38. public class Client {
    39. public static void main(String[] args) {
    40. AbstractClass abstractClassA = new ConcreteClassA();
    41. AbstractClass abstractClassB = new ConcreteClassB();
    42. // 调用模版方法
    43. abstractClassA.templateMethod();
    44. abstractClassB.templateMethod();
    45. }
    46. }

  • 相关阅读:
    1.1二分查找
    Hexagon_V65_Programmers_Reference_Manual(17)
    uni-app:实现picker下拉列表的默认值设置
    最高薪14.5K!转行软件测试面临就业难?修炼内功才是破局之道
    2022年服装进销存软件排行榜重磅出炉!
    飞天使-k8s基础组件分析-安全
    Kettle连接Oracle(Oracle19c&Oracle11g)
    Java优先级队列(堆)
    wpf datagrid常用绑定以及格式
    LeetCode 热题100——栈与队列专题(三)
  • 原文地址:https://blog.csdn.net/qq_34690079/article/details/136589481