• JS 设计模式七 -- 模板方法模式


    概念

    模板方法模式是一直昂只需使用继承就可以实现的非常简单的模式。

    模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体实现的子类。

    实现

    模板方法模式一般的实现方式为继承。

    // 体育运动
    function Sport() {
    
    }
    
    Sport.prototype = {
        constructor: Sport,
        
        // 模板,按顺序执行
        init: function() {
            this.stretch();
            this.jog();
            this.deepBreath();
            this.start();
    
            var free = this.end();
            
            // 运动后还有空的话,就拉伸一下
            if (free !== false) {
                this.stretch();
            }
            
        },
        
        // 拉伸
        stretch: function() {
            console.log('拉伸');
        },
        
        // 慢跑
        jog: function() {
            console.log('慢跑');
        },
        
        // 深呼吸
        deepBreath: function() {
            console.log('深呼吸');
        },
    
        // 开始运动
        start: function() {
            throw new Error('子类必须重写此方法');
        },
    
        // 结束运动
        end: function() {
            console.log('运动结束');
        }
    };
    
    // 篮球
    function Basketball() {
    
    }
    
    Basketball.prototype = new Sport();
    
    // 重写相关的方法
    Basketball.prototype.start = function() {
        console.log('先投上几个三分');
    };
    
    Basketball.prototype.end = function() {
        console.log('运动结束了,有事先走一步');
        return false;
    };
    
    
    // 马拉松
    function Marathon() {
    
    }
    
    Marathon.prototype = new Sport();
    
    var basketball = new Basketball();
    var marathon = new Marathon();
    
    // 子类调用,最终会按照父类定义的顺序执行
    basketball.init();
    marathon.init();

  • 相关阅读:
    AFNetWorking 文件上传 By-H罗
    利用系统APP实现导航---By张秀清
    项目 和 需求文档 -- 吴欧
    键盘弹起及lab时的动态计算高度 --董鑫
    NSSet和NSMutableSet
    内联函数 在ios中的运用 --黄仁斌
    iOS 七大手势之轻拍,长按,旋转手势识别器方法-赵小波
    网络技术之BGP
    [手游项目3]-3-golang
    [手游项目3]-2-git
  • 原文地址:https://www.cnblogs.com/gaosirs/p/10750454.html
Copyright © 2020-2023  润新知