zoukankan      html  css  js  c++  java
  • 大话设计模式读书笔记--7.模板方法模式

    有时候,我们会遇到由一系列步骤构成的过程,这个过程从高层次上看是相同的,但有些步骤的实现可能不同,我们就要考虑使用模板方法

    生活中的例子:坐交通工具上班,  A开车,B做公交, 交通工具就是一个抽象模板

    定义

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

    模式结构

    AbstractClass:是一个抽象模板类,templateMethod()是模板方法,它是一个顶级逻辑的骨架,primitiveOperation()是一个抽象方法,是顶级逻辑的组成部分

    ConcreteClass: 实现父类所定义的抽象方法,每一个ConcreteClass都可以给出不同的实现,从而是顶级逻辑的实现不同

    模式实现

    场景: 学生抄写考试题,并写出答案

    场景分析:

    高层次步骤: 抄题,写答案
    没变化的步骤; 抄写的题目一样
    有变化的步骤: 每个人的答案不同

    点击下载代码

    特点和使用场景

    特点: 

    1.把不变行为搬移到超类,去除子类中的重复代码,体现它的优势
    2.通过父类调用子类,这是一种反向的控制

    使用场景: 

    1.一次性实现一个算法的不变部分,并将可变的行为留给子类来实现。
    
    2.需要通过子类来决定父类算法中某个步骤是否执行,实现子类对父类的反向控制。
  • 相关阅读:
    jira 解决结果配置
    .net core ef mysql in 参数化写法
    CentOS安装破解版Jira 亲测有效(附带破解包)
    实现js读取Excel数据
    android权限(permission)大全
    如何搭建Nuget服务器
    WebApi配置Swagger
    Aps.Net WebApi依赖注入
    解决.Net Core跨域问题
    一篇关于Asp.Net Model验证响应消息的问题处理
  • 原文地址:https://www.cnblogs.com/liuconglin/p/6414441.html
Copyright © 2011-2022 走看看