JavaScript设计模式之模板方法模式原理与用法示例
程序员文章站
2022-07-26 10:31:49
本文实例讲述了javascript设计模式之模板方法模式原理与用法。分享给大家供大家参考,具体如下:
一、模板方法模式:一种只需使用继承就可以实现的非常简单的模式。
二...
本文实例讲述了javascript设计模式之模板方法模式原理与用法。分享给大家供大家参考,具体如下:
一、模板方法模式:一种只需使用继承就可以实现的非常简单的模式。
二、模板方法模式由两部分组成,第一部分是抽象父类,第二部分是具体的实现子类。
三、以设计模式中的coffee or tea来说明模板方法模式:
1、模板brverage,代码如下:
var beverage = function(){}; beverage.prototype.boilwater = function(){ console.log('把水煮沸'); }; beverage.prototype.pourincup = function(){ throw new error( '子类必须重写pourincup' ); }; beverage.prototype.addcondiments = function(){ throw new error( '子类必须重写addcondiments方法' ); }; beverage.prototype.customerwantsconditions = function(){ return true; //默认需要调料 }; beverage.prototype.init = function(){ this.boilwater(); this.brew(); this.pourincup(); if(this.customerwantscondiments()){ //如果挂钩返回true,则需要调料 this.addcondiments(); } };
2、子类继承父类
var coffeewithhook = function(){}; coffeewithhook.prototype = new beverage(); coffeewithhook.prototype.brew = function(){ console.log('把咖啡倒进杯子'); }; coffeewithhook.prototype.addcondiments = function(){ console.log('加糖和牛奶'); }; coffeewithhook.prototype.customerwantscondiments = function(){ return window.confirm( '请问需要调料吗?' ); };
3、煮一杯咖啡
var coffeewithhook = new coffeewithhook(); coffeewithhook.init();
四、另一种写法
var beverage = function( param ){ var boilwater = function(){ console.log( '把水煮沸' ); }; var brew = param.brew || function(){ throw new error( '必须传递brew方法' ); }; var pourincup = param.pourincup || function(){ throw new error( '必须传递pourincup方法' ); }; var addcondiments = param.addcondiments || function(){ throw new error( '必须传递addcondiments方法' ); }; var f = function(){}; f.prototype.init = function(){ boilwater(); brew(); pourincup(); addcondiments(); }; return f; }; var coffee = beverage({ brew: function(){ console.log( '用沸水冲泡咖啡' ); }, pourincup: function(){ console.log('把咖啡倒进杯子'); }, addcondiments: function(){ console.log('加糖和牛奶'); } }); var coffee = new coffee(); coffee.init();
上述代码使用在线html/css/javascript代码运行工具http://tools.jb51.net/code/htmljsrun测试运行结果:
更多关于javascript相关内容可查看本站专题:《javascript面向对象入门教程》、《javascript切换特效与技巧总结》、《javascript查找算法技巧总结》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结》
希望本文所述对大家javascript程序设计有所帮助。
上一篇: CAD怎么建模三维零件模型?