下班了没事,设计模式之一角

asa5880 2011-06-15 05:55:06
加精
闲来无事翻翻以前的文档,结合今天去面试了几个人而感,
一些公司常拿设计模式来考,特别是工厂相关模式,记得比较经典的就是普通员工、工程师和管理者的工资结算问题(工厂+策略)

有时我在想,针对这个需求有必要吗?我硬编码会怎么样(硬编码不一定就不是模块化编程)?代码量会更少,在增加新的一种角色计算时,增一个case未必会导致错误和难以维护,同样也要修改代码重新编译,只是放在别的类中抽象出多层。

再者如果角色增加比较多,我相信这种模式会比较烂更难以维护,代码量会倍量增加,其实我们的原则是抽象变化,举个具体例子:在配置表中维护角色和工资计算公式,以应变可能的变化。这样做在公式变化的情况下不会对代码做出修改,可维护性高,岂不是更好?
我不想把例子中的方法往哪种设计模式上靠,而只是想提出一种问题和想法,我觉得有些设计模式的书介绍其适应环境时应当介绍其度的问题,更觉的作为面试官不应一味问这些在他心中固定可事实可变的SB设计问题

这是怎么了,一天头晕乎乎的,都不知道自己说了些什么,只是看了一些过度设计和走套路的设计的感想,头痛,可能明天就不这么想了,哈哈,有错误的地方可以指正,谢绝谩骂,呵呵

...全文
1586 75 打赏 收藏 转发到动态 举报
写回复
用AI写文章
75 条回复
切换为时间正序
请发表友善的回复…
发表回复
鸭梨山大帝 2011-07-12
  • 打赏
  • 举报
回复
软件工程里面一句话可以概括:"高内聚,低耦合"

设计模式是前辈高人们从大量现实工作中提取,升华出来的一系列的方法论.

这个方法论的目的就是达到软件的"高内聚,低耦合"

工作中,不必要太过于纠结使用哪种设计模式,当你了解,明白的时候,

你就会发觉自己设计的软件不谋而合的符合了一些设计模式.

为了设计模式而设计模式就如脱裤子放屁-多此一举,也如硬性规定吃饭就只能用筷子一样-死搬硬套.

===========

正如吃蛋时,不要过于纠结从小头开始吃,还是从大头开始吃.

只要能顺利拨开蛋壳,不弄碎蛋,不让蛋弄满你一身,顺利的吃下蛋,不噎着.

世界上吃蛋的具体方法有千千万万种,蛋始终不外乎是那个蛋,最终目的仍旧是你要吃下他.

你可以用锤子敲,用凿子凿,用石头砸,用刀砍.

这些方法不一定是最优的,所以前辈高人们将吃蛋的方法提起出来,升华到一个方法论的高度,

在这些方法论的指引下,你可以更快更好的吃下这个蛋.

而这些方法论不是凭空产生的,说不定你目前就用的是,只是有时候没意识到而已.

m33cda2593 2011-07-12
  • 打赏
  • 举报
回复
喜欢这样的讨论
学习了
  • 打赏
  • 举报
回复
来自故乡的风 2011-07-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wanghui0380 的回复:]
实际上这东西就和围棋里面的定式是一样的概念

可以按定式下也可以不按定式下,具体如何决定只看哪种更符合利益

当然下棋本身有写基础原则,就如同我们的那5个设计原则。只要不违背设计原则的一切皆可以

就像围棋里面对定式的描述“定式只是一个在通常这种局面下不吃亏的手段”如果你有很好的手段,那么大可以使用,如果没有更好的手段,按定式下起码不吃亏(当然前提是你选的定式要符合那个场景)
[/Quote]

有机会找熊猫下盘棋!
tmoonlight 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 thefirstz 的回复:]
封装是一种伟大的思想
[/Quote]
其实我也一直想说:匈牙利命名法是一种伟大的发明。
yo010yo 2011-07-08
  • 打赏
  • 举报
回复
静观高手辩解。。
土汉子 2011-07-04
  • 打赏
  • 举报
回复
rcx100 2011-07-04
  • 打赏
  • 举报
回复
设计模式
有待学习!~
asa5880 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 fellatioyzx 的回复:]
站在新手程序员的角度说的SB一点,如果硬编码的话,你要几乎把之前的测试全部做一遍。
采用模式的话,基本可以不修改现有代码,这样我只测试新增类就可以,最多最多了,做一个降版测试,哪一个更省事儿呢?
[/Quote]

你这是测试省事。。。
请不要这么狭义的理解硬编码
asa5880 2011-07-04
  • 打赏
  • 举报
回复
呵呵,到现在还有人回,看来哥们都挺有时间。。。。。
等会再开个帖子散分。。。。。。


新人还是多去读读这方面书籍,是有好处的,可以借鉴前人比较好的设计思路,打开自己的思维,
用的时候还是要结合自己的实际项目,否则用错或过度设计你会死的很难看^-^
xiaocongzhi 2011-07-03
  • 打赏
  • 举报
回复
礼拜天进来向楼主学习!
renzhe02 2011-07-03
  • 打赏
  • 举报
回复
支持楼主.
cpe2012 2011-07-02
  • 打赏
  • 举报
回复
学习学习
junshi010 2011-07-02
  • 打赏
  • 举报
回复
看着有点头晕,不过学习下!!
疯狂的拉面 2011-07-02
  • 打赏
  • 举报
回复
学习中,顶楼主
瑾九宸 2011-07-02
  • 打赏
  • 举报
回复
去年去打酱油,今年来围观
Spring73 2011-07-02
  • 打赏
  • 举报
回复
一路看下来,发现自己工作就工作着,已经很累了,所以下班了从没去多想,去怀疑什么。
超级大笨狼 2011-07-01
  • 打赏
  • 举报
回复
不讲究设计模式,好比个人卫生习惯很糟糕。
过度封装,好比有洁癖。


设计模式,不和实际团队情况结合起来,就是耍流氓。
设计模式,不和算法思维结合起来,就是耍流氓。

所以,设计模式神马的,是理论联系实际的路线,难度在于如何联系,如何“团队落地执行”。
郗晓勇 2011-07-01
  • 打赏
  • 举报
回复
设计模式的最高境界是啥呢?
wxd024 2011-07-01
  • 打赏
  • 举报
回复
关注,学习
加载更多回复(51)

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧