阅读《JavaScript设计模式》第三章心得
2024-08-31 00:35:33
简单工厂模式
1、通过类实例化对象创建
传统的用面向对象方法去创建很多类去实现某些功能不妥当,这样不仅占用的很多类名称,而且别人使用这些方法的同时要记住每个类的名字,所以这样不适合团队开发,所以我们可以把这些类封装到一个函数里面,这样别人用你的类就不用记住每个类的名字,只用记住工厂的名字就可以了。直接上代码:
//篮球基类
var Basketball = function(){
this.intro = '篮球盛行于美国';
}
Basketball.prototype = {
getMember:function(){
console.log('每个队伍需要5名队员');
},
getBallSize : function(){
console.log('篮球很大')
}
}
//足球基类
var Football = function(){
this.intro='足球在世界范围内很流行';
}
Football.prototype ={
getMember:function(){
console.log('每个队伍需要11名队员');
},
getBallSize:function(){
console.log('足球很大');
}
}
//网球基类
var Tennis = function(){
this.intro = '每年有很多网球比赛'
}
Tennis.prototype ={
getMenber:function(){
console.log('每个队伍至少需要一名队员')
},
getBallSize:function(){
console.log('网球很小')
}
}
//运动工厂
var SportsFactory = function(name){
switch (name){
case 'NBA':
return new Basketball();
case 'wordCup':
return new Football();
case 'FrenchOpen':
return new Tennis();
}
}
//为世界杯创建一个足球,只需要记住运动工厂SportsFactory,调用并创建
var footnall = SportsFactory("wordCup");
console.log(footnall);
console.log(footnall.intro);
footnall.getMember();
2、通过创建一个新的对象然后包装增强其属性和功能来实现。
这样实现的好处是可以不用创建很多类名。有些相同的功能可以复用。代码如下:
function createPop(type, text) {
var o = new Object();
o.content = text;
o.show = function() {
//显示方法
};
if(type == 'alert') {
//警告框差异部分
}
if(type == 'prompt') {
//提示框差异部分
}
if(type = 'confirm') {
//确认框差异部分
}
//将对象返回
return o;
}
//创建警示框
var userNameAlert = createPop('alert', '用户名只能是26个字母或者数字');
最新文章
- 新版C#编译器关于函数闭包的一处更改
- 首次用U盘安装CentOS
- JavaScript 运动框架
- UOJ #149 [NOIP 2015] 子串
- ios如何生成crash报告
- Cow Bowling
- HDFS的可靠性
- 配置文件——WebApp.config文件读取和修改
- 20145103JAVA第一次实验报告
- Mac下安装eclipse+python+pydev+numpy+matplotlib
- Linux命令执行顺序— ||和&;&;和;
- DotNet IOC Framework - Microsoft Unity介绍
- JAVADOC时候乱码-编码 GBK 的不可映射字符
- DataTables给每一列添加下拉框搜索
- JSTL判断list的size()大小
- 重构tableview!
- Microsoft Graph: Developer Blog
- 记一次servlet项目启动
- ubuntu18.04 配置chrome ss
- Django应用:学习日志网站
热门文章
- 关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、文件夹结构、设置压缩和对中文文件名称的支持、以及Catalina这个名字的由来……等)
- Localhost 回环IP 127.0.0.1
- SOA究竟是个啥
- 浅析Netty原理
- 交换排序(2)——冒泡排序(bubble sort)
- Coursera Algorithms week3 快速排序 练习测验: Selection in two sorted arrays(从两个有序数组中寻找第K大元素)
- shopnc学习
- The Preliminary Contest for ICPC China Nanchang National Invitational I.Max answer单调栈
- [Swift通天遁地]七、数据与安全-(11)如何检测应用程序中的内存泄露
- redis-缓存穿透,缓存雪崩,缓存击穿,并发竞争