博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js设计模式 --- 模版设计模式
阅读量:6457 次
发布时间:2019-06-23

本文共 1329 字,大约阅读时间需要 4 分钟。

模版设计模式

设计模式处处透漏者前辈们的指挥, 在众多设计模式中模版设计模式是软件设计中最常用, 最正统的模式, 也是本人最喜欢的模式, 其就像一颗颗螺丝钉处处体现在软件设计和其他模式中

父类定义一个模板结构,将部分具体内容延迟到子类去实现

在软件系统设计中最常用的就是 接口--抽象类--类 三级设计模式, 如下图

图片描述

模版设计模式结构

再此模式中接口定义了方法, 抽象类定义了算法的框架实现了一部分算法, 对象类则实现了剩余的其他方法(当然如有需要可以灵活配置, 比如抽象类实现了一个默认的方法, 如有需要对象类可以重写这个方法)

图片描述

实现

  • 接口

    let IEat = new Interface('IEat', ['eatDinner','buy','cook', 'eat'])
  • 抽象类

    let Eatdinner = function () {};Eatdinner.prototype.buy = function () {  throw new Error();};Eatdinner.prototype.cook = function () {  throw new Error();};Eatdinner.prototype.eat = function () {  console.log('吃');};Eatdinner.prototype.eatDinner = function () {  this.buy();  this.cook();  this.eat();};
  • 对象类

    let EatA = function () {  Eatdinner.call(this);   }extend(EatA, Eatdinner);EatA.prototype.buy = function () {  console.log('萝卜');}EatA.prototype.cook = function () {  console.log('炒');}let EatB = function () {  Eatdinner.call(this);   }extend(EatB, Eatdinner);EatB.prototype.buy = function () {  console.log('萝卜');}EatB.prototype.cook = function () {  console.log('炸');}let EatC = function () {  Eatdinner.call(this);   }extend(EatC, Eatdinner);EatC.prototype.buy = function () {  console.log('青菜');}EatC.prototype.cook = function () {  console.log('烤');}

模板模式的优点

  • 具体细节步骤实现定义在子类中,子类定义详细处理算法是不会改变算法整体结构。
  • 代码复用的基本技术,在数据库设计中尤为重要。
  • 存在一种反向的控制结构,通过一个父类调用其子类的操作,通过子类对父类进行扩展增加新的行为,符合“开闭原则”。

转载地址:http://pvizo.baihongyu.com/

你可能感兴趣的文章
在XenCenter6.2中构建CentOS7虚拟机的启动错误
查看>>
.NET Framework3.0/3.5/4.0/4.5新增功能摘要
查看>>
php中表单提交复选框与下拉列表项
查看>>
熟悉常用的Linux操作
查看>>
WordPress 前端投稿/编辑发表文章插件 DJD Site Post(支持游客和已注册用户)汉化版 免费下载...
查看>>
C# 自定义事件整理项目 - EventDemo
查看>>
几何面积体积_2
查看>>
面象过程与面象对象
查看>>
用CSS实现图片水印效果代码
查看>>
谷歌设置支持webgl
查看>>
P3402 【模板】可持久化并查集
查看>>
js的AJAX请求有关知识总结
查看>>
Eclipse添加新server时无法选择Tomcat7的问题
查看>>
L207
查看>>
nginx 配置https 负载均衡
查看>>
listing_windows形式输出直线结构体的起点、终点信息
查看>>
双拓扑排序 HDOJ 5098 Smart Software Installer
查看>>
三分 POJ 2420 A Star not a Tree?
查看>>
Java多线程和线程池
查看>>
36.Node.js 工具模块--OS模块系统操作
查看>>