博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
好程序员web前端教程分享js模板模式
阅读量:7134 次
发布时间:2019-06-28

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

什么是模板模式?

模板模式是抽象父类定义了子类需要重写的相关方法。 而这些方法,仍然是通过父类方法调用的。 根据描述,“模板”的思想体现在:父类定义的接口方法。 除此之外,子类方法的调用,也是被父类控制的。

应用场景

一些系统的架构或者算法骨架,由“BOSS”编写抽象方法,具体的实现,交给“小弟们”实现。 而绝对是不是用“小弟们”的方法,还是看“BOSS”的心情。 不是很恰当的比喻哈~

ES6 实现

Animal是抽象类,Dog和Cat分别具体实现了eat()和sleep()方法。 Dog或Cat实例可以通过live()方法调用eat()和sleep()。

注意:Cat和Dog实例会被自动添加live()方法。不暴露live()是为了防止live()被子类重写,保证父类的控制权。

class Animal {

constructor() {
// this 指向实例
this.live = () => {
this.eat();
this.sleep();
};
}

eat() {

throw new Error("模板类方法必须被重写");
}

sleep() {

throw new Error("模板类方法必须被重写");
}
}

class Dog extends Animal {

constructor(...args) {
super(...args);
}
eat() {
console.log("狗吃粮");
}
sleep() {
console.log("狗睡觉");
}
}

class Cat extends Animal {

constructor(...args) {
super(...args);
}
eat() {
console.log("猫吃粮");
}
sleep() {
console.log("猫睡觉");
}
}

/***** 以下为测试代码 ****/

// 此时, Animal中的this指向dog

let dog = new Dog();
dog.live();

// 此时, Animal中的this指向cat

let cat = new Cat();
cat.live();

转载于:https://blog.51cto.com/14249543/2377880

你可能感兴趣的文章
SWAP_JOIN_INPUTS Oracle Hint(处理hash join强制大表(segment_size大)作为被驱动表)
查看>>
oc引入头文件
查看>>
ORACLE联机日志文件丢失或损坏的处理方法(转)
查看>>
bootstrap-导航加下拉菜单(二级导航)
查看>>
Flex改变Alert、Tooltip组件样式
查看>>
ByteBuffer源码分析
查看>>
跨过Nginx上基于uWSGI部署Django项目的坑
查看>>
selinux 的管理
查看>>
Centos安装升级python,ipython,pip
查看>>
nginx的io复用、阻塞非阻塞、同步非同步、apache与nginx
查看>>
no module named win32com.client 错误解决
查看>>
JSP中include指令和include动作区别
查看>>
emc vplex 知识
查看>>
CentOS安装VMware Tools
查看>>
Linux 引导过程
查看>>
JustinMind原型制作工具
查看>>
Zabbix 中文语言配置
查看>>
软SAN 课堂内容
查看>>
Hive计算时count sum partition by等方法在数据开发时的一些用法
查看>>
Linux内核学习总结
查看>>