MyException - 我的异常网
当前位置:我的异常网» .NET分析设计 » 下班了没事,设计模式之一角解决方案

下班了没事,设计模式之一角解决方案

www.MyException.Cn  网友分享于:2013-01-13  浏览:2次
下班了没事,设计模式之一角
闲来无事翻翻以前的文档,结合今天去面试了几个人而感,
一些公司常拿设计模式来考,特别是工厂相关模式,记得比较经典的就是普通员工、工程师和管理者的工资结算问题(工厂+策略)

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

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

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



------解决方案--------------------
楼主好闲啊。
------解决方案--------------------
面向对象设计原则第二条:对扩展开放,对修改关闭。

也就是说,当我们在业务类型上想到要Switch分支判断而又要复用原来的设计时,仍然要保持原来的代码不变,使用多态的方法来实现。当然,这是指高层地扩展、业务领域类型的扩展。那种不能“对修改关闭”的方法,就是重新修改源代码然后重新编译和发布。
------解决方案--------------------
模式不模式的名词不重要。重要地是,当你增加一种所谓的人员角色时,你的整个工资核算系统的代码是处处都要重新修改,还是仅仅修改一个点呢?
------解决方案--------------------
这个话今天说过了,再说一遍也无妨:

我猜想,GoF的理论形成的时候,JAVA有没有发明还是个问题,更不要说C#了,
楼主如果用C++开发的话,可能差不多有用.

今天,更先进的技术条件,使得开发者能够用更通俗的思维方式去设计软件,
开发者利用更少的、更简洁的设计模式就能解决更多、更复杂的问题
------解决方案--------------------
呵呵,不是设计模式的问题

是实现难度的问题。lz的解决方案是“元数据编程”而“元数据编程”是个超范式。是编写计算机语言的语言

所以“元编程”从理论上来说能解决一切问题

so,从理论上来说,lz可以不要任何设计模式,元编程能解决一切问题。


------解决方案--------------------
lz的意思是照本宣科好几年之后,自己思路开阔了,才发现原来书本上其实是一些很简单的花拳绣腿,现在自己随便耍一耍就可以自然而然地暗合理论的目标了是吧?!

是这样的。既可以学十种八种中国传统武术拳种套路来学搏击术,也可以学现代的搏击术(以及现代训练方法)然后评判传统套路打法到底有没有实力。设计模式就是为了四人帮配合推广java语言的产物,是将近20年前的搏击练法之一。凡是编程模式,基本上都是跟编程语言语法一样,都是一些小代码、小技巧。
------解决方案--------------------
实际上这东西就和围棋里面的定式是一样的概念

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

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

就像围棋里面对定式的描述“定式只是一个在通常这种局面下不吃亏的手段”如果你有很好的手段,那么大可以使用,如果没有更好的手段,按定式下起码不吃亏(当然前提是你选的定式要符合那个场景)
------解决方案--------------------
看了下,发现自己也出来这么多年了,很多东西,并不太清楚,

总觉得自己欠缺些什么。。。因为有些时候别人问你某些技术、或是什么原理上的东西。

自己答不上来,但一听别人解释,发现其实自己曾经也做过。。。汗。。。。蛮杯具的。
------解决方案--------------------
没从模式的 存在总有一定的理由 你不应该看到他们的缺点 而是有点

有时候 缺点也是 有点

------解决方案--------------------
其实模式的真正核心是:封装变化。 Encapsulate what varies。
------解决方案--------------------
太好了呵呵!
------解决方案--------------------
封装是一种伟大的思想
------解决方案--------------------
强势围观!!!!!!!!!!!!!!!!!!!!!!!!!!!!
------解决方案--------------------
学习的过程总是一个曲线的过程,不断的怀疑,打消怀疑,再怀疑,再打消怀疑。。。
等真的到了大师了,心中也许早已没有了模式。。。
------解决方案--------------------
刚接触设计模式,一下子开阔了,原来可以这样!
------解决方案--------------------
先mark,回来再看
------解决方案--------------------
呵呵,学习学习
------解决方案--------------------
学习了,现在在看设计模式,对于我,它还是很启发我的思路的,~~
------解决方案--------------------

文章评论

要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序员必看的十大电影
程序员必看的十大电影
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
一个程序员的时间管理
一个程序员的时间管理
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
为什么程序员都是夜猫子
为什么程序员都是夜猫子
10个调试和排错的小建议
10个调试和排错的小建议
程序员的鄙视链
程序员的鄙视链
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
 程序员的样子
程序员的样子
我是如何打败拖延症的
我是如何打败拖延症的
Java程序员必看电影
Java程序员必看电影
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员应该关注的一些事儿
程序员应该关注的一些事儿
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员和编码员之间的区别
程序员和编码员之间的区别
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
旅行,写作,编程
旅行,写作,编程
代码女神横空出世
代码女神横空出世
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
漫画:程序员的工作
漫画:程序员的工作
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
那些争议最大的编程观点
那些争议最大的编程观点
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
编程语言是女人
编程语言是女人
老程序员的下场
老程序员的下场
程序员都该阅读的书
程序员都该阅读的书
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
中美印日四国程序员比较
中美印日四国程序员比较
我的丈夫是个程序员
我的丈夫是个程序员
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有