设计模式 | 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 ※ 简单工厂模式 |一个对象代替多个类的主要内容,如果未能解决你的问题,请参考以下文章

设计模式

JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

设计模式——通过简单工厂模式推出工厂方法模式

JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)