今天是清明小长假的最后一天了,想想明天开始又要早上六点半出门晚上十点到家的日子,士心就有一点蛋蛋的忧伤。。。不知道小伙伴们有没有和我一样的感受。忧伤归忧伤,我们的学习还得继续,前两天士心学习了面向对象编程,和面象对象编程的三大特征:封装,继承,多态。不过是骡子是马总要拉上战场遛一遛,士心已经迫不及待要把这两天学习的功夫拿出来大显身手了。。。
士心今天一上班,就接到了项目经理分派过来的任务:“士心,这几天学习得怎么样?这里有一个登录模块你能不能来处理一下?”“没问题 ”士心信心满满地一口答应下来。“很好,那我先来跟你讲讲需求,当用户没有输入用户名或者输入的内容不符合规范的时候,就弹出一个自定义警示框,提示用户名不能为空或是输入的用户名有误”“好的”士心想了想,就写下了下面的代码
"这么快就写好了,不错,用户密码这里也有一个需求,当用户输入的密码错误时提示一句’用户名或密码有误,请重新输入‘" 士心心里暗喜啊,这前两天才学的面向对象编程马上就用上了,小case
还没等士心高兴几秒钟,项目经理又发话了,“不过这里有些变化,就是在警示框中加一个忘记密码的按钮”“再加一个按钮?那之前写的功能不是复用不了了?又得创建 一个类了”
“士心,做完了吗?登录成功后这里还要加一个提示框,除了有确定取消按钮,再提示一句’欢迎回来,请输入您今天的心情吧‘”士心:“。。。,又要加一个新类了”
花了老半天的时间,士心总算是把从登录验证到登录成功这一套流程写完了。士心这边刚写完,那边老G就来找士心了:“士心,你的登录模块的提示框写好了吗?我这边有个注册功能也要用到提示框,把你写的方法借我用一下”“好啊,我是通过对类实例化对象来实现的”“那太好了,我拿过来直接用就可以了,这可省下我不少事”。于是士心就把刚写好的三个类发给了老G,
“怎么这么多呀?这样吧,你写给简单工厂给我吧,可以吗?”
“简单工厂?是什么?”
“是一种设计模式啊,我的意思是你给我三个类,我每次创建时还要找到对应的类,太麻烦了,所以你最好封装在一个函数里,这样我只要记住 这个函数,然后通过这个函数 就可以创建 我需要的对象来使用。如果还有其它人要使用的话,也不用再关注创建 这些对象到底依赖于哪个类了,我们知道这个函数 就可以了,这个函数通常就被称为工厂函数,这种模式就叫简单工厂模式”
“我懂了,我现在就加上工厂方法”
老G看了看士心写的工厂方法,说道:“不错,不过。。。你之前写的三个类有很多地方是相同的,比如都 有共有属性this.content,原型共有方法:show,你看我这样改行不行?”
士心看了看老G写的这段代码"我写的是通过类实例 化对象创建的,你写的是通过创建一个新对象然后包装增强其属性和功能来实现的"
“没错,还有一点,你写的那些类如果继承同一父类,那么他们的父类原型上的方法是可以共用的,而我这种创建 的对象都是新的个体,所以他们的方法就不能共用了,选择哪种工厂方式来实现还要看你是如何分析你的需求的”“我明白了”
晚上回到家中,士心在网上查了些资料,然后结合今天的工作做了一下总结:工厂模式就是通过专门定义一个类来负责创建其他类的实例,如果这些类有共同的逻辑,就可以把这些共同的东西提取出来,放在一个抽象类中,然后让具体产品继承抽象类。