zoukankan      html  css  js  c++  java
  • 设计模式——模板方法

    定义

    就是定义算法骨架的方法 具体的操作:在模板中直接实现某些步骤的方法,通常这些步骤的实现算法是固定的,而且是不怎么变化的,因此就可以当作公共功能实现在模板里面。
    其实写设计模式的系列笔记就是一种模板方法,每篇文章的流程(目录)都是一样的,我实现了每个部分的具体细节。
    

    模板

    模板方法比较简单,第一次听到这个概念的时候,发现原来自己一种用的叫做模板方法。
    就是在抽象类中实现模板方法TemplateMethod,而这个方法里面具体用到了多个具体流程如PrimitiveOperation1/PrimitiveOperation2, 子类只要继承抽象模板并且实现具体流程,就能对外提供模板方法的能力。

    实例

    abstract class Shoping {
        // 模板方法,由父类实现,可以定义为final
        public final void buyGood() {
           login();
           order();
           pay();
        }
        
        abstract void login();
        abstract void order();
        abstract void pay();
    }
    
    JingdongBuy extends Shoping {
        public void login() {
            Log.d("登录京东账号");
        }
    
        public void order() {
            Log.d("生成京东订单");
        }
    
        public void pay() {
            Log.d("使用京东白条支付");
        }
    }
    
    TaobaoBuy extends Shoping {
        public void login() {
            Log.d("登录淘宝账号");
        }
    
        public void order() {
            Log.d("生成淘宝订单");
        }
    
        public void pay() {
            Log.d("使用支付宝支付");
        }
    }
    
    

    优点

    模板方法注重抽象不同操作之间的共同点,剖离不同点。
    求同存异: 将共同点在抽象类中实现,不同的具体实现保留在各个子类。

    1. 减少重复代码,发便后续扩展与维护
    2. 符合开闭原则,子类可以对功能进行扩展

    缺点

    1. 增加抽象类
    2. 代码阅读难度增大(需要到子类中找实现)

    注意: 抽象过度可能会导致后期扩展麻烦,尽量保证模板流程以后不会再变更

  • 相关阅读:
    页面跳转时,统计数据丢失问题探讨
    模拟form提交数据
    mysql学习问题解决
    20200824_小程序自动化测试与失败用例截图
    20200819_App自动化测试框架实战-这两天的很重要
    20200817_多点触摸操作和Hybrid应用自动化
    20200814_App元素定位&滑动操作
    20200812_adb常用命令&第一个App自动化测试脚本
    20200810_TestNG单元测试框架&App自动化环境部署
    20200807_Maven项目构建&TestNG单元测试框架
  • 原文地址:https://www.cnblogs.com/NeilZhang/p/11900965.html
Copyright © 2011-2022 走看看