美文网首页
模板模式

模板模式

作者: lj72808up | 来源:发表于2021-04-20 17:50 被阅读0次

一. 什么是模板模式

  1. 模板方法设计模式: 在一个方法中书写逻辑架构, 其中某些步骤实现不确定因此推迟到子类中实现. 即模板模式可以让算法架构不发生更改的情况下, 让子类重新定义某些步骤
  2. 模板模式的框架

public abstract class AbstractClass {
  public final void templateMethod() {
    //...
    method1();
    //...
    method2();
    //...
  }
  
  protected abstract void method1();
  protected abstract void method2();
}

public class ConcreteClass1 extends AbstractClass {
  @Override
  protected void method1() {
    //...
  }
  
  @Override
  protected void method2() {
    //...
  }
}

public class ConcreteClass2 extends AbstractClass {
  @Override
  protected void method1() {
    //...
  }
  
  @Override
  protected void method2() {
    //...
  }
}

AbstractClass demo = ConcreteClass1();
demo.templateMethod();

二. 模板模式的作用

  1. 复用: 所以子类可以复用父类中提供的模板方法代码
  2. 扩展: 模板模式提供功能扩展点, 让框架用户在不修改框架源码的情况下, 基于扩展点定制化框架的功能

三. 回调

  1. 模板基于继承, 回调基于组合实现扩展点
    回调在功能上, 也能实现代码复用和提供扩展点, 让框架用户在不修改框架源码的情况下, 基于扩展点定制化框架的功能. 不同的是模板基于继承模板类的方式实现扩展点, 而回调基于组合的方式实现. 对于面向对象语言, 可以直接把回调函数作为参数掺入方法, 从而实现回调; 而 java 因为没有函数对象, 所有传入的是包含回调函数的接口

public interface ICallback {
  void methodToCallback();
}

public class BClass {
  public void process(ICallback callback) {
    //...
    callback.methodToCallback();
    //...
  }
}

public class AClass {
  public static void main(String[] args) {
    BClass b = new BClass();
    b.process(new ICallback() { //回调对象
      @Override
      public void methodToCallback() {
        System.out.println("Call back me.");
      }
    });
  }
}
  1. 同步回调和异步回调
    上述代码模式是同步回调, 即在函数返回之前执行回调函数. 异步回调指在函数返回后执行回调函数. 同步函数看起来更像模板模式, 异步回调看起开更像观察者模式;
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    System.out.println("I am clicked.");
  }
});

从代码结构上看, 事件监听很像回调, 即作为参数传递一个回调函数对象给另一个函数. 从应用场景上看, 又很像观察者模式, 即先注册观察者OnClickListener

相关文章

  • 11.8设计模式-模板模式-详解

    设计模式-模式模式 模板方法模式详解 模板方法模式在android中的实际运用 1.模板方法模式详解 2.模板方法...

  • 第5章 -行为型模式-模板方法模式

    一、模板方法模式的简介 二、模板方法模式的优点 三、模板方法模式的应用场景 四、模板方法模式的实例

  • 模板方法模式

    模板方法模式 模板方法模式的定义 模板方法模式(Template Method Pattern)是如此简单,以致让...

  • 设计模式系列-模板方法模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 模板方法模式 定义 模板方法模式在一个方法中定义了算法...

  • 设计模式(行为型)-- 模板模式

    模板模式的原理与实现 模板模式,全称是模板方法设计模式,英文是 Template Method Design Pa...

  • 行为型-Template

    模板模式的原理与实现 模板模式,全称是模板方法设计模式,英文是 Template Method Design Pa...

  • 行为型 模板模式(文末有项目连接)

    1:模板方式解决的问题(先了解) 2:模板模式的原理与实现 3:模板模式核心代码 4:模板模式复用例子(Input...

  • 模板模式,也是解耦算法的吗?

    模板模式,和算法有什么关系呢? 模板模式,在什么场景使用呢? 模板模式(Template Pattern),定义一...

  • 模板方法模式

    一、模板方法模式介绍 二、模板方法模式代码实例

  • 58 - 模板模式

    本文来学习另外一种行为型设计模式,模板模式。模板模式主要是用来解决复用和扩展两个问题 模板模式的原理与实现 模板模...

网友评论

      本文标题:模板模式

      本文链接:https://www.haomeiwen.com/subject/yhgnlltx.html