美文网首页
模板模式

模板模式

作者: Neo_xu | 来源:发表于2018-09-28 00:04 被阅读0次

概念

定义一个操作中算法的骨架,将具体的操作延时到子类,在不改变结构的情况下为可以修改具体的特定步骤,主要的实现原理是继承

角色

  • 抽象出方法的父类
  • 具体实现的子类

利弊

  • 代码复用
  • 反向的控制结构
  • 具体实现细节不改变父类结构

  • 每个不同的实现都需要不同的子类,会导致系统变得庞大

demo

登录的场景
抽象出方法的父类:
登录一般都是要实现校验的步骤和消息推送,还有其实的例如日志记录等,这类用了校验和消息推送作为登录场景的必要步骤,不同的登录方法有不同的校验和不同的消息推送方式。

public abstract class Login {
    
    /** 
    * @Title: login 
    * @Description: 登录
    * @param @return    设定文件 
    * @return Boolean    返回类型 
    * @throws 
    */
    public Boolean login(String userName,String password){
        this.verify(userName, password);
        this.verify(userName, password);
        return true;
    }
    /** 
    * @Title: verify 
    * @Description: 校验
    * @param @param userName
    * @param @param password
    * @param @return    设定文件 
    * @return Boolean    返回类型 
    * @throws 
    */
    public abstract Boolean verify(String userName,String password);
    /** 
    * @Title:sendMessage
    * @Description: 消息通知
    * @param @param userName
    * @param @param password
    * @param @return    设定文件 
    * @return Boolean    返回类型 
    * @throws 
    */
    public abstract Boolean sendMessage(String userName,String password);
}

通多不同的方式有不同的实现,子类将具体实现出来
支付宝的验证登录方式
···
public class AliPayLogin extends Login {
@Override
public Boolean verify(String userName, String password) {
System.out.println("阿里第三方登录校验");
return true;
}

@Override
public Boolean sendMessage(String userName, String password) {
    System.out.println("阿里第三方登录消息通知");
    return true;
}

}
···
微信的登录方式
···
public class WechatLogin extends Login {

@Override
public Boolean verify(String userName, String password) {
    System.out.println("微信系统第三方校验");
    return true;
}

@Override
public Boolean sendMessage(String userName, String password) {
    System.out.println("微信系统第三方消息通知");
    return true;
}

}
···
在是使用的时候完全可以服用login的代码,这样就做到代码的复用,子类又可以拥有不同的实现。
···
public static void main(String[] args) {
Login login = new AliPayLogin();
login.login("test", "1111");
login = new WechatLogin();
login.login("test", "1111");
}
···

相关文章

  • 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/rxzyoftx.html