简单工厂模式

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个字母或者数字');

最新文章

  1. 新版C#编译器关于函数闭包的一处更改
  2. 首次用U盘安装CentOS
  3. JavaScript 运动框架
  4. UOJ #149 [NOIP 2015] 子串
  5. ios如何生成crash报告
  6. Cow Bowling
  7. HDFS的可靠性
  8. 配置文件——WebApp.config文件读取和修改
  9. 20145103JAVA第一次实验报告
  10. Mac下安装eclipse+python+pydev+numpy+matplotlib
  11. Linux命令执行顺序— ||和&&和;
  12. DotNet IOC Framework - Microsoft Unity介绍
  13. JAVADOC时候乱码-编码 GBK 的不可映射字符
  14. DataTables给每一列添加下拉框搜索
  15. JSTL判断list的size()大小
  16. 重构tableview!
  17. Microsoft Graph: Developer Blog
  18. 记一次servlet项目启动
  19. ubuntu18.04 配置chrome ss
  20. Django应用:学习日志网站

热门文章

  1. 关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、文件夹结构、设置压缩和对中文文件名称的支持、以及Catalina这个名字的由来……等)
  2. Localhost 回环IP 127.0.0.1
  3. SOA究竟是个啥
  4. 浅析Netty原理
  5. 交换排序(2)——冒泡排序(bubble sort)
  6. Coursera Algorithms week3 快速排序 练习测验: Selection in two sorted arrays(从两个有序数组中寻找第K大元素)
  7. shopnc学习
  8. The Preliminary Contest for ICPC China Nanchang National Invitational I.Max answer单调栈
  9. [Swift通天遁地]七、数据与安全-(11)如何检测应用程序中的内存泄露
  10. redis-缓存穿透,缓存雪崩,缓存击穿,并发竞争