工厂模式

来源:互联网 发布:linq过滤重复数据 编辑:程序博客网 时间:2024/06/08 06:57

最近一直做支付结果页面非常烦恼。情况是这样的,我写了一个支付结果页payResultView,起初只有"成功"和"失败"两种界面,因为共用的控件多,所以加了很多if self判断,耦合性度非常高,但代码量非常少,感觉还不错。

       没过不久恶梦来了,现在变成了"成功"、"失败"、"成功带红包"、"打赏成功"四种界面,新加了两种情况。这下我可不干了,跟产品经理说这挺难的,不好加。但产品经理觉得加这个很简单啊,没搭理我,要求我必须改。改吧!

因为之前的代码都柔在了一起,这次还是照样,写的那就一个乱啊,写的if self 太多了,逻辑我都快分不清哪是哪了。可最后不管怎么说还是写完了,可是我心想,这代码除了我没有第二个人能看懂了!!!!

       最后我就反思,这么高的耦合性太不合理了,然后就想了一个更好的解决方法。添加四个view, view1,view2,view3,view4,把所以的控件分开,不互相复用,逻辑也分开,不互相影响。当一个view show的时候,就让另三个view就必须hide. 不过还有一个头疼的问题就是给控件起名字,比较说view1和view2都有一个nameLabel,为了不冲突,只能写name1Label,name2Label,这种写法很不好理解,不适合大量使用。可不管怎么说,添加4个view的方法的确是比原来的效果好。

      可最近我认真读了“工厂模式”,正好能用上。先创建一个paySuperView再继承4个 子view,利用factory生成,不光在外部调用时非常的简便,而且里面的逻辑也分成了不同的类,非常清晰。说实话,这是除了苹果自带的观察者模式、委托模式、单例模式、命令模式以外,第一次使用其它设计模式。

原来我一直以为代码量少就认为好,这样是错的。结构逻辑清晰更重要!!!!

   原来学c\c++,java,php,object-c无论哪门语言,最前面的总是告诉你什么叫多态,继承,可从没放在心上。

    最后一句话:多用继承、delegate、扩展,尤其是继承!!!!!

     

0 0