设计模式 | 014 ※ 简单工厂模式 |一个对象代替多个类
Posted 鱼C工作室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 | 014 ※ 简单工厂模式 |一个对象代替多个类相关的知识,希望对你有一定的参考价值。
上一期
热心的小缘前辈开始帮不二修改代码——
“不二,你写的 loginAlert、loginConfirm、loginGreetins 3个类有很多地方都是相同的,可以抽象提起出来共用。”
“怎么实现?莫非是用对象?”,不二谦虚的问到。
“嗯,你这么说也不算错,简单工厂模式就是创建对象,你创建的3个类很多地方都很相似,例如你要添加关闭按钮,文案提示等。”
“是的”
“那么我们可以通过将这些相似的东西提取出来,又因为没有父类,所以只需要创建一个简单的对象来拓展方法和属性,然后最终将它返回出来。”
“是的”
“所以修改起来很容易,我们先找到它们相似的东西,都有属性 content,show 方法。不同的地方也很容易找,就像警告框和确认框是不一样的。”
边说着,小缘开始修改代码:
function myFactory(type,text){
// 创建一个对象
var o = new Object();
o.content = text;
o.show = function(){
// 显示
};
}
“这样我们就创建了一个工厂 myFactory 方法,通过一个对象将相似的功能列出来。”
“嗯嗯,我好像懂了,接下来是不是就要判断警告框,来将不同的地方分别处理?”
“没错,用最简单的 if 判断,我们可以这么写”
// 判断框
if(type == 'alert'){
// 执行警告框差异部分
}
if(type == 'confirm'){
// 执行确认框差异部分
}
if(type == 'greetings')
{
// 执行问候框
}
// 将对象返回
return o;
"上面就把差异的部分处理好了,就可以这么创建了。"
// 创建警告框
var userNameAlert = myFactory('alert','用户名不能超过16位字符');
var passwordAlert = myFactory('alert','输入密码不正确');
// 确认框
var loginConfirm = myFactory('confirm','您的用户名不存在,请重新输入');
"提示框留给你自己来写吧~"
“嗯,谢谢小缘前辈。”
“没事的,我稍微扯一点经验给你,团队开发不同于个人开发,全局变量的限制很大,破坏了也很强,所以要少用。”
“嗯嗯”
“对于同一个类对象在不同需求中的重复使用,很多时候我们不需要重复创建,代码复用是面向对象编程的一条准则。”
不二心里美滋滋哒~
“通过简单工厂创建一些对象,可以让这些对象共用一些资源而把自己独有的方法保护起来。嗯,那就先这样吧,有问题你再cue我~”
“好哒,那就麻烦小缘前辈辣~”
欲知更多详情,可以到鱼C论坛(https://fishc.com.cn/)订阅淘帖——
JavaScript模式大全 - 庖丁解牛
请完成提示框的调用
以上是关于设计模式 | 014 ※ 简单工厂模式 |一个对象代替多个类的主要内容,如果未能解决你的问题,请参考以下文章