设计模式:模板模式

版权声明:本文为博主原创文章,未经博主允许不得转载。有问题可以留言或者邮箱shusheng52@126邮箱联系 https://blog.csdn.net/xiaoshusheng10/article/details/86750658

设计模式:模板模式

  • 模板模式简介:
    1. 简介:一个抽象类公开定义了它的方法的方式/模式。它的子类可以按照需要重写方法实现,但调用将以抽象类中定义的方式进行。
    2. 意图:定义一个操作中的算法的骨架,而讲义步骤延迟到子类中。
    3. 主要解决:一些方法通用,却在每一个子类都重写了这一个方法。
    4. 使用场景:
      1. 有多个子类公有的方法,且逻辑相同
      2. 重要的,复杂的方法可以考虑作为模板方法
  • 模板模式成分:
    1. 模板抽象类,定义公共的方法,更多定义实现的流程
    2. 具体实现类:定义细化
  • 模板模式优缺点:
    1. 优点:
      1. 封装不变部分,扩展可变的部分
      2. 提取公共代码,便于维护
      3. 行为由父类控制,子类实现
    2. 缺点:
      1. 每一个不同的实现都需要一个子类实现,导致类的个数增加,使得系统更加庞大。
  • 模板模式的实现:
    1. 模板抽象类:
      package com.fg.java.template;
      
      public abstract class SoftLive {
          abstract  void initialize();
          abstract void startplay();
          abstract void end();
          public final void play(){
              initialize();
              startplay();
              end();
          }
      }
      
    2. 具体实现类:
      package com.fg.java.template;
      
      public class QQSoft extends SoftLive {
          @Override
          void initialize() {
              System.out.println("Wechat initialize");
          }
      
          @Override
          void startplay() {
              System.out.println("Wechat startplay");
          }
      
          @Override
          void end() {
              System.out.println("QQSoft end");
          }
      }
      
      package com.fg.java.template;
      
      public class Wechat extends SoftLive {
          @Override
          void initialize() {
              System.out.println("Wechat initialize");
          }
      
          @Override
          void startplay() {
              System.out.println("Wechat startplay");
          }
      
          @Override
          void end() {
              System.out.println("Wechat end");
          }
      }
      

猜你喜欢

转载自blog.csdn.net/xiaoshusheng10/article/details/86750658