工厂模式
2015-09-29 17:37
225 查看
最近一直做支付结果页面非常烦恼。情况是这样的,我写了一个支付结果页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、扩展,尤其是继承!!!!!
没过不久恶梦来了,现在变成了"成功"、"失败"、"成功带红包"、"打赏成功"四种界面,新加了两种情况。这下我可不干了,跟产品经理说这挺难的,不好加。但产品经理觉得加这个很简单啊,没搭理我,要求我必须改。改吧!
因为之前的代码都柔在了一起,这次还是照样,写的那就一个乱啊,写的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、扩展,尤其是继承!!!!!
相关文章推荐
- SpringMVC
- poj 1848 树形dp(添加最少的边每点都恰在一个圈中)
- ubuntu下grub启动硬盘iso安装ubuntu
- 再回首【Android 自定义View (二) 进阶】
- Asp.Net alert 方法
- Oracle直接路径加载--append的深度解析
- JSTL标签
- Ajax Post 传输对象或数组的解决方案
- 求两个有序数组的中位数(扩展求第k大元素)
- hdu 5447 Good Numbers(数论)
- 【Android开发经验】我们要友好的告诉用户,程序要崩溃了
- Android的自定义闹钟
- JQuery中$.load()方法的用法和分析【转】
- 实现DIV层内的文字垂直居中
- PostgreSQL:Java使用CopyManager实现客户端文件COPY导入 .
- [数据结构]Hash表初学(开放寻址法 )
- iOS夯实:ARC时代的内存管理
- 全排列问题:序号与排列转换
- usbredir-0.7内容详解(一)
- js图片转base64并压缩