r******r 发帖数: 700 | 1 同一个问题,classes (interfaces) 设计的方案有很多种。很多时候,感觉最直观,
最方便的设计方案,反而用不到那些经典的 pattern. 而那些介绍 design pattern 的
书,对每一种 pattern 的使用范围好像有很多严格的限制。如果没有多年的设计经验
和对每一种 pattern 的深刻理解,只是为了应用某个 pattern 而机械的使用,好像会
适得其反.
比如说,singleton pattern, 概念好像很明确,但是用途却很有限。在实际编程中,
很多时候,某个类可能就只要一个 instance,但是不管自己,还是别人的 code,很少
用到或看到使用 Singleton。这也许解释了为什么在面试中,问到设计模式的问题很少
,因为面试官可能自己都很少使用那些 pattern.
如果不能确定哪个 pattern 是否合适,就干脆不要用了;否则,免得弄出笑话。有经
验的说说,是不是这样呢? 学生或刚毕业的,估计都有这种感觉吧? |
x***y 发帖数: 633 | 2 I remember in an interview last year I was asked when we should use singlton
design pattern,and that interviewer expected a better answer than "the
class can only have one instance".....
【在 r******r 的大作中提到】 : 同一个问题,classes (interfaces) 设计的方案有很多种。很多时候,感觉最直观, : 最方便的设计方案,反而用不到那些经典的 pattern. 而那些介绍 design pattern 的 : 书,对每一种 pattern 的使用范围好像有很多严格的限制。如果没有多年的设计经验 : 和对每一种 pattern 的深刻理解,只是为了应用某个 pattern 而机械的使用,好像会 : 适得其反. : 比如说,singleton pattern, 概念好像很明确,但是用途却很有限。在实际编程中, : 很多时候,某个类可能就只要一个 instance,但是不管自己,还是别人的 code,很少 : 用到或看到使用 Singleton。这也许解释了为什么在面试中,问到设计模式的问题很少 : ,因为面试官可能自己都很少使用那些 pattern. : 如果不能确定哪个 pattern 是否合适,就干脆不要用了;否则,免得弄出笑话。有经
|
x*****p 发帖数: 1707 | 3 在大型项目开发中,design patterns还是很重要的,对代码的可维护性,可重用性,
安全性,延展性等都有很多好处。编程多了,许多design patterns的想法会自然出现
,但可能你用了一些design pattern,却不知道名字。所以design pattern的另一个好
处,是方便交流,一说大家都明白是什么,否则你一堆代码是啥思想,解释不太清。 |
x*****p 发帖数: 1707 | 4 Actually, singleton patterns are used in many places. For example, in
Cairngorm MVC, a singleton for ModelLocator class is a must. If you are
enrolled in some big project, you will find more examples for singleton
objects.
singlton
【在 x***y 的大作中提到】 : I remember in an interview last year I was asked when we should use singlton : design pattern,and that interviewer expected a better answer than "the : class can only have one instance".....
|
s******o 发帖数: 2233 | 5 singleton, iterator, MVC, factory, strategy这些在工作中都还是很常见的吧
【在 r******r 的大作中提到】 : 同一个问题,classes (interfaces) 设计的方案有很多种。很多时候,感觉最直观, : 最方便的设计方案,反而用不到那些经典的 pattern. 而那些介绍 design pattern 的 : 书,对每一种 pattern 的使用范围好像有很多严格的限制。如果没有多年的设计经验 : 和对每一种 pattern 的深刻理解,只是为了应用某个 pattern 而机械的使用,好像会 : 适得其反. : 比如说,singleton pattern, 概念好像很明确,但是用途却很有限。在实际编程中, : 很多时候,某个类可能就只要一个 instance,但是不管自己,还是别人的 code,很少 : 用到或看到使用 Singleton。这也许解释了为什么在面试中,问到设计模式的问题很少 : ,因为面试官可能自己都很少使用那些 pattern. : 如果不能确定哪个 pattern 是否合适,就干脆不要用了;否则,免得弄出笑话。有经
|
g*********s 发帖数: 1782 | 6 singleton and iterator is everywhere.
【在 r******r 的大作中提到】 : 同一个问题,classes (interfaces) 设计的方案有很多种。很多时候,感觉最直观, : 最方便的设计方案,反而用不到那些经典的 pattern. 而那些介绍 design pattern 的 : 书,对每一种 pattern 的使用范围好像有很多严格的限制。如果没有多年的设计经验 : 和对每一种 pattern 的深刻理解,只是为了应用某个 pattern 而机械的使用,好像会 : 适得其反. : 比如说,singleton pattern, 概念好像很明确,但是用途却很有限。在实际编程中, : 很多时候,某个类可能就只要一个 instance,但是不管自己,还是别人的 code,很少 : 用到或看到使用 Singleton。这也许解释了为什么在面试中,问到设计模式的问题很少 : ,因为面试官可能自己都很少使用那些 pattern. : 如果不能确定哪个 pattern 是否合适,就干脆不要用了;否则,免得弄出笑话。有经
|
r******r 发帖数: 700 | 7 对,很多命名听上去好像是某个工具的类,有可能是 singleton, 比如,
xxxLocator
xxxCreator
xxxParser
xxxGenerator
xxxTagger
xxxProduer, etc.
但是,好像在写这样的类时,很多时候,作者都不严格按照 Singleton 的要求来些,
还是当作一个普通的类来处理。 其 assumption 就是,这个类的用途很明确,单一,
自己或别人都不会试图去建立它的多个实例,因为应用当中,不存在那种可能。当然,
如果写成 singleton 的样子,更直观一些,语义更明确一些。
或许是我见得太少,坐井观天了吧
【在 x*****p 的大作中提到】 : Actually, singleton patterns are used in many places. For example, in : Cairngorm MVC, a singleton for ModelLocator class is a must. If you are : enrolled in some big project, you will find more examples for singleton : objects. : : singlton
|
r******r 发帖数: 700 | 8 iterator 是的,无论 c++ 还是 java, 它都是 container class 的基础。
【在 s******o 的大作中提到】 : singleton, iterator, MVC, factory, strategy这些在工作中都还是很常见的吧
|
j*****u 发帖数: 1133 | 9 恰恰相反,design pattern非常有用,在实际工作用你可能几年都没有机会去写quicks
ort,dp。。。但是design pattern天天都会见到
singleton其实严格讲不太像design pattern,更像一个programming trick
在application level,通常high level design做的好不好要比局部最优更重要,尤其
在需求变化很快的领域。
pattern is everywhere,不单单局限在Gof的23种。不仅优化了design,也会帮助comm
unication。比如简单的说一个词observer就非常明确了,如果大家都不知道design pa
ttern那要费多少力气才能解释清楚。
【在 r******r 的大作中提到】 : 同一个问题,classes (interfaces) 设计的方案有很多种。很多时候,感觉最直观, : 最方便的设计方案,反而用不到那些经典的 pattern. 而那些介绍 design pattern 的 : 书,对每一种 pattern 的使用范围好像有很多严格的限制。如果没有多年的设计经验 : 和对每一种 pattern 的深刻理解,只是为了应用某个 pattern 而机械的使用,好像会 : 适得其反. : 比如说,singleton pattern, 概念好像很明确,但是用途却很有限。在实际编程中, : 很多时候,某个类可能就只要一个 instance,但是不管自己,还是别人的 code,很少 : 用到或看到使用 Singleton。这也许解释了为什么在面试中,问到设计模式的问题很少 : ,因为面试官可能自己都很少使用那些 pattern. : 如果不能确定哪个 pattern 是否合适,就干脆不要用了;否则,免得弄出笑话。有经
|
y***m 发帖数: 7027 | 10 这些东东是为项目大了,人多了,方便统一思路用,小项目人员少就按怎么方便怎么弄
【在 r******r 的大作中提到】 : 同一个问题,classes (interfaces) 设计的方案有很多种。很多时候,感觉最直观, : 最方便的设计方案,反而用不到那些经典的 pattern. 而那些介绍 design pattern 的 : 书,对每一种 pattern 的使用范围好像有很多严格的限制。如果没有多年的设计经验 : 和对每一种 pattern 的深刻理解,只是为了应用某个 pattern 而机械的使用,好像会 : 适得其反. : 比如说,singleton pattern, 概念好像很明确,但是用途却很有限。在实际编程中, : 很多时候,某个类可能就只要一个 instance,但是不管自己,还是别人的 code,很少 : 用到或看到使用 Singleton。这也许解释了为什么在面试中,问到设计模式的问题很少 : ,因为面试官可能自己都很少使用那些 pattern. : 如果不能确定哪个 pattern 是否合适,就干脆不要用了;否则,免得弄出笑话。有经
|
|
|
y***m 发帖数: 7027 | 11 nod,扣那一分一毫的算法性能,大西瓜却丢了。。
quicks
comm
pa
【在 j*****u 的大作中提到】 : 恰恰相反,design pattern非常有用,在实际工作用你可能几年都没有机会去写quicks : ort,dp。。。但是design pattern天天都会见到 : singleton其实严格讲不太像design pattern,更像一个programming trick : 在application level,通常high level design做的好不好要比局部最优更重要,尤其 : 在需求变化很快的领域。 : pattern is everywhere,不单单局限在Gof的23种。不仅优化了design,也会帮助comm : unication。比如简单的说一个词observer就非常明确了,如果大家都不知道design pa : ttern那要费多少力气才能解释清楚。
|
r******r 发帖数: 700 | 12 大型软件系统中,都严格使用 UML 这样的工具来作需求分析和设计,生成各种设计图
表,然后据图进行 code 的吗?
听说有些公司根本就不用这些工具,程序员就讨论讨论,直接写 code. 觉得没有严格
的分析和设计阶段,大程序很难写啊。需要哪些类,不需要哪些类,什么类需要什么性
质的成员变量和方法,以及各个类之间的通讯。没有设计图,要把这些复杂的东西都在
脑袋当中在开始阶段就想清楚,直接写代码,都是大牛人吧。
感觉类的设计与算法比较,一点都不轻松啊。各个领域的经典算法,基本上都已经有了
,都被大师级的人物,研究透了。但是每个应用的设计,却是千变万化的。
quicks
comm
pa
【在 j*****u 的大作中提到】 : 恰恰相反,design pattern非常有用,在实际工作用你可能几年都没有机会去写quicks : ort,dp。。。但是design pattern天天都会见到 : singleton其实严格讲不太像design pattern,更像一个programming trick : 在application level,通常high level design做的好不好要比局部最优更重要,尤其 : 在需求变化很快的领域。 : pattern is everywhere,不单单局限在Gof的23种。不仅优化了design,也会帮助comm : unication。比如简单的说一个词observer就非常明确了,如果大家都不知道design pa : ttern那要费多少力气才能解释清楚。
|
j*****u 发帖数: 1133 | 13 实际工作中,没有那么严格。很多情况下class design都在developer的脑子里,而且最
初的design一般都不是很优的,要不停的refactor来改善结构设计。这也是make sense
的,design pattern都是有cost的,over design is worse than no design。用了des
ign pattern常常会产生更多的代码和类,有时code会难以理解,如果这些地方没有变化
点的话只是有害无益。
你说的很对,算法通常相对固定,容易找到reference。design充满着变化,包含着各个
方面的考虑,还会经常面对tradeoff。这也就是为什么interview experienced candid
ate会侧重design的缘故。很多时候都是经验的积累,这些经验不只是书中学来的,更多
的是经历的project中各种失败的教训和总结出来的东西。
【在 r******r 的大作中提到】 : 大型软件系统中,都严格使用 UML 这样的工具来作需求分析和设计,生成各种设计图 : 表,然后据图进行 code 的吗? : 听说有些公司根本就不用这些工具,程序员就讨论讨论,直接写 code. 觉得没有严格 : 的分析和设计阶段,大程序很难写啊。需要哪些类,不需要哪些类,什么类需要什么性 : 质的成员变量和方法,以及各个类之间的通讯。没有设计图,要把这些复杂的东西都在 : 脑袋当中在开始阶段就想清楚,直接写代码,都是大牛人吧。 : 感觉类的设计与算法比较,一点都不轻松啊。各个领域的经典算法,基本上都已经有了 : ,都被大师级的人物,研究透了。但是每个应用的设计,却是千变万化的。 : : quicks
|
s******s 发帖数: 3694 | 14 一个大的, 可维护的, 可扩展的,可复用的 ,多任务的, 并发式开发的, 没有不用到的, 反之你可以认为这个开发的东西很撮。
估计起来, 大一点的系统差不多有 15 ~ 20 种设计模式可以被用到
【在 r******r 的大作中提到】 : 同一个问题,classes (interfaces) 设计的方案有很多种。很多时候,感觉最直观, : 最方便的设计方案,反而用不到那些经典的 pattern. 而那些介绍 design pattern 的 : 书,对每一种 pattern 的使用范围好像有很多严格的限制。如果没有多年的设计经验 : 和对每一种 pattern 的深刻理解,只是为了应用某个 pattern 而机械的使用,好像会 : 适得其反. : 比如说,singleton pattern, 概念好像很明确,但是用途却很有限。在实际编程中, : 很多时候,某个类可能就只要一个 instance,但是不管自己,还是别人的 code,很少 : 用到或看到使用 Singleton。这也许解释了为什么在面试中,问到设计模式的问题很少 : ,因为面试官可能自己都很少使用那些 pattern. : 如果不能确定哪个 pattern 是否合适,就干脆不要用了;否则,免得弄出笑话。有经
|
s******s 发帖数: 3694 | 15 Senior 和 非 Senior 的差别就在这里, 这个又回到另外一个老话题, 软件不光是扣
定, 行业的产品的背景和经验很重要。
一个成熟的开发公司, 需求设计差不多会花掉 30% 的时间, Software Design 差不
多花掉 30% 的时间, 扣定和集成测试大概也就是 30% 的时间, 10% 用在 review。
任何企图冒充老鸟或者牛逼的英雄人物, 最后往往被扔到开发的垃圾桶
且最
sense
des
变化
各个
candid
更多
【在 j*****u 的大作中提到】 : 实际工作中,没有那么严格。很多情况下class design都在developer的脑子里,而且最 : 初的design一般都不是很优的,要不停的refactor来改善结构设计。这也是make sense : 的,design pattern都是有cost的,over design is worse than no design。用了des : ign pattern常常会产生更多的代码和类,有时code会难以理解,如果这些地方没有变化 : 点的话只是有害无益。 : 你说的很对,算法通常相对固定,容易找到reference。design充满着变化,包含着各个 : 方面的考虑,还会经常面对tradeoff。这也就是为什么interview experienced candid : ate会侧重design的缘故。很多时候都是经验的积累,这些经验不只是书中学来的,更多 : 的是经历的project中各种失败的教训和总结出来的东西。
|
i**9 发帖数: 351 | 16 谁能聊一聊amazon 那个经典的furniture(table ,chair ,wood_chair, steel_chair,
wood_steel_chair,wood_table,steel_table)该用什么design pattern?怎么 design更
有效率? |