`
bachmozart
  • 浏览: 111377 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

生搬硬套设计模式坑害了多少人

    博客分类:
  • Java
阅读更多
看了这个帖子,有感写点废话
http://www.iteye.com/topic/243309

现在随便哪个面试不考点设计模式什么的,似乎就不叫面试,我倒想问问,面试官们你们自己不算那些死记硬背的,能记住多少模式的思想,又有多少是你们每天写的程序会用到的

我承认
1. 设计模式确实是前人总结的一些经验和良好的设计范式,是很有价值的
2. 把握良好的设计模式能够理清程序的骨架,使程序变得更清晰

但是我很想说的是

1.设计模式是最通用的一些程序设计方法和范式,不同的领域有自己的一些模式可以遵循,未必非得是那20几种里的某一个

2.书中列举的那些模式是死的,只是特定问题的一些设计思路,未必就非得那样,生搬硬套是很傻的行为

3.设计模式这东西没写过一定得代码量,看了书上写的那些也未必理解,代码量积累到一定程序(当然不是每天重复的体力劳动,需要勤思考),自然会对特定领域,或特定问题有自己的一套解决方法或者设计范式,很可能早就有了一套自己的组件库,所以也不需要去看书上那些死的东西,该会的你都会了,其他的你也用不到

所以基本上 面试时考个什么叫包装,什么叫工厂,抽象方法的实在是没什么意义,都成了背书了

举个最简单的例子,设计模式书上讲包装设计模式废了那么多笔墨,又是抽象类,又是接口的,累不累呀,其实可能天天都用的东西,不搞复杂点就不叫高深,这样难道不叫包装吗?

public interface Display{
     String display();
}

public class DisplayWrapper implements Display{
    private Display display;
    public DisplayWrapper(Display display){
        this.display=display;
    }
    public String display(){
        String s=display.display();
        //wrapper自己的处理
    }
}


很多程序员几乎认为,封装得不花个半天功夫根本找不到实现类在哪 这就是面向对象的美,就是面向对象的最高境界,简单的事情往往搞的N复杂

我就是想说 简单的就是最好的,简单的往往也是强大的

粗浅见解,有拍砖的欢迎







分享到:
评论
20 楼 amonlei 2009-05-14  
bachmozart 写道
我实在不理解我的言论有什么地方另你们不爽了

通常架构师早就对常用设计模式很熟悉了,但是单单说熟悉设计模式,那离架构师水平还差十万八千里呢

我就是鄙视那些张口闭口让谈谈设计模式的面试官们,一看就知道压根肚子里就没啥东西,所以就以为掌握那么几个设计模式就很nb了,可笑之极

受到啥刺激了?说来听听。。。
19 楼 mesmes 2009-05-14  
小隐隐于野 中隐隐于市 大隐隐于朝
18 楼 bachmozart 2009-05-14  
yizhuo 写道
说明楼主还不知道设计模式的目的和作用


这个说的有点离谱,设计模式本就不是什么高深莫测的东西,常用的但凡有几年工作经验的都该知道
17 楼 bachmozart 2009-05-14  
imcotton 写道
90%的谈论设计模式的人都没有掌握设计模式
91%的讨伐谈论设计模式的人也同样没有掌握设计模式

楼主基本是属于91%那波的(个人观点)


我没讨伐设计模式,我讨伐的是很多人把设计模式当成神乎其神的东西,逢面试必考之

另外,要说掌握这东西,怎样算掌握呢?我对我熟悉的领域该用到的范式早就很熟悉了,其它的我用不到的我一定要会吗?
16 楼 ramus 2009-05-14  
楼主请看这篇文章

http://ramus.iteye.com/blog/366922
15 楼 imcotton 2009-05-14  
90%的谈论设计模式的人都没有掌握设计模式
91%的讨伐谈论设计模式的人也同样没有掌握设计模式

楼主基本是属于91%那波的(个人观点)
14 楼 yizhuo 2009-05-13  
说明楼主还不知道设计模式的目的和作用
13 楼 stevendu 2009-05-13  
引用

模式这东西靠的还是你通过有效代码的积累和思考而自然形成的一些经验总结,而不是书上的那几个死的名字

作为面试官需要的就是你的积累,需要的就是你对细节的把握,至于对模式生搬硬套的回答,一眼就看出来了。
12 楼 treblesoftware 2009-05-13  
模式还是很有用的。许多人嘴里说,不要为了模式而模式。可是多少人又这样做呢?
我认为模式可以在不注意的时候使用,当那种模式已经成为你的一种习惯时,这才是最高境界吧。
11 楼 bachmozart 2009-05-13  
刑天战士 写道
架构师和设计模式貌似关系真的不是很大……


极度简单化的理解:

设计模式是用来组织代码的

架构师通常是组织服务器群组的

所以我说熟悉设计模式跟架构师有很大差距
10 楼 刑天战士 2009-05-13  
架构师和设计模式貌似关系真的不是很大……
9 楼 mercyblitz 2009-05-12  
bachmozart 写道
我实在不理解我的言论有什么地方另你们不爽了

通常架构师早就对常用设计模式很熟悉了,但是单单说熟悉设计模式,那离架构师水平还差十万八千里呢

我就是鄙视那些张口闭口让谈谈设计模式的面试官们,一看就知道压根肚子里就没啥东西,所以就以为掌握那么几个设计模式就很nb了,可笑之极



能够掌握就很NB了,关键是在于应用在适合的场景,不要去套就OK了
8 楼 mikeandmore 2009-05-11  
bachmozart 写道


看你的回复,貌似是同意我的观点哦
可能是我表达的不清楚,我本来也不是说设计模式没有用,而是想说模式这东西靠的还是你通过有效代码的积累和思考而自然形成的一些经验总结,而不是书上的那几个死的名字

另外代码看多了,象工厂,包装,观察者这么common sense的东西肯定也早就很熟悉了

也许我该说设计模式书无用,还不如直接去找些好的源码来看来的实在

啊,这个啊。
我觉得结合着来看吧。。。。
逐渐增长经验,代码是比不可少的。

但是只读代码,有时候自己写的时候很难就能想到某个pattern正好合理,往往会走弯路。

我觉得,边看书,边读代码,边写一些自己的小项目是一个不错的学习方法吧。
7 楼 bachmozart 2009-05-11  
mikeandmore 写道
bachmozart 写道
我实在不理解我的言论有什么地方另你们不爽了

通常架构师早就对常用设计模式很熟悉了,但是单单说熟悉设计模式,那离架构师水平还差十万八千里呢

我就是鄙视那些张口闭口让谈谈设计模式的面试官们,一看就知道压根肚子里就没啥东西,所以就以为掌握那么几个设计模式就很nb了,可笑之极

不同意,设计模式是基础。。。一定要知道一些么。
无论你作不做架构师,即便是一个普通的代码民工显然也是需要知道设计模式的。。。


看你的回复,貌似是同意我的观点哦
可能是我表达的不清楚,我本来也不是说设计模式没有用,而是想说模式这东西靠的还是你通过有效代码的积累和思考而自然形成的一些经验总结,而不是书上的那几个死的名字

另外代码看多了,象工厂,包装,观察者这么common sense的东西肯定也早就很熟悉了

也许我该说设计模式书无用,还不如直接去找些好的源码来看来的实在
6 楼 dengyin2000 2009-05-11  
就像周星驰说的  “老佛爷是供在心里的,不是挂在嘴上的” 

要做到心中有剑, 灵活使用, 而不是为了模式而模式。
5 楼 mikeandmore 2009-05-11  
bachmozart 写道
我实在不理解我的言论有什么地方另你们不爽了

通常架构师早就对常用设计模式很熟悉了,但是单单说熟悉设计模式,那离架构师水平还差十万八千里呢

我就是鄙视那些张口闭口让谈谈设计模式的面试官们,一看就知道压根肚子里就没啥东西,所以就以为掌握那么几个设计模式就很nb了,可笑之极

不同意,设计模式是基础。。。一定要知道一些么。
无论你作不做架构师,即便是一个普通的代码民工显然也是需要知道设计模式的。。。
4 楼 bachmozart 2009-05-11  
我实在不理解我的言论有什么地方另你们不爽了

通常架构师早就对常用设计模式很熟悉了,但是单单说熟悉设计模式,那离架构师水平还差十万八千里呢

我就是鄙视那些张口闭口让谈谈设计模式的面试官们,一看就知道压根肚子里就没啥东西,所以就以为掌握那么几个设计模式就很nb了,可笑之极
3 楼 iaimstar 2009-05-11  
看起来像个代理。。。
lz可能意思就是不要为了设计模式而设计模式
曾经看过一文,大体意思就是
什么事情都是向下兼容容易,架构师可以理解程序员,但是程序员很难理解架构师,之间架设个桥梁,让程序员在实现的时候可以更好的理解架构师的设计思想,就是设计模式的作用。
设计模式都是经验的积累,代码写的多了,到哪都是模式,没有大量的编程经验,凭空谈模式,肯定很生涩,没办法
2 楼 mikeandmore 2009-05-09  
lz是说overdesign的问题吧。。呵呵。。。
re一下,很多OO程序员都有overdesign的倾向啊。
1 楼 魔力猫咪 2009-05-09  
标题有误。你的意思应该是不能僵化的去考察设计模式的掌握。但是你这种说话的方式让大家很反感。你应该讨论的是如何考察一个人真实的面向对象设计水平,而不是会背几个设计模式。

相关推荐

    J2ee设计模式.pdf

    J2EE(Java 2 Platform, Enterprise Edition)设计模式是针对企业级应用程序中重复出现的问题提出的解决方案,...在学习和使用这些模式的过程中,开发者应当结合具体的应用场景,灵活地应用这些模式,而非生搬硬套。

    设计模式java

    设计模式是软件工程中一个重要的概念,它是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。很多模式在Java等面向对象的...

    设计模式 C#23个设计模式

    同样,设计模式不是生搬硬套的模板,而是根据项目需求选择合适的方式,以达到最佳效果。 【设计模式的作用】在于提高代码的可维护性、可扩展性和性能。正确使用设计模式可以使软件在面对需求变更时保持稳定,同时...

    Go设计模式

    最后,尽管设计模式是编程中的重要概念,但不应该生搬硬套。在实际开发中,需要根据具体情况来决定是否使用某种设计模式,以及如何适当地运用这些模式来提升软件的质量。使用设计模式的目的是为了解决特定问题,并不...

    23种设计模式知识要点.pdf

    设计模式是软件工程中用于解决特定问题的一般性指导方案,它们是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。23种设计...

    设计模式PPT

    学习设计模式并不意味着在每个项目中都生搬硬套,而是要根据具体需求选择合适的设计模式,实现最佳的设计决策。设计模式的掌握需要时间和实践,通过反复练习和应用,开发者能够更好地理解和应用这些模式,从而提升...

    《漫谈设计模式》—Java设计模式的好帮手

    同时,作者可能会强调,虽然设计模式提供了通用的解决方案,但并不意味着在所有情况下都应该生搬硬套,关键在于理解其背后的意图和原则,以便在需要的时候能够灵活运用。 此外,书中可能会讨论如何将设计模式与Java...

    PHP设计模式.rar

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。在PHP编程领域,理解并熟练运用设计模式对于提升代码质量、可维护性和可扩展性至关重要。本资料主要围绕PHP设计模式进行深入探讨。...

    C#23中设计模式(完整版)

    C#23中设计模式涉及到的是软件设计模式,它是一套被反复使用、多数人知晓、分类编目、代码设计经验的总结。设计模式主要是为了提高代码的可重用性,让代码更容易被他人理解,保证代码的可靠性。在C#编程中,熟练掌握...

    java开发设计模式

    在应用设计模式时,重要的是理解其背后的思想和原则,而不是生搬硬套。设计模式只是工具,目的是解决实际问题,提高代码质量。通过合理地应用设计模式,可以在软件开发中实现更优雅、更高效的解决方案。

    幻灯20090119王翔CSharp设计模式工程化实现

    王翔指出,设计模式不是万能的,也不应生搬硬套。在实际应用中,需要根据项目需求选择合适的设计模式,并理解其背后的意图和适用场景。滥用设计模式可能导致不必要的复杂性,影响项目的效率和可读性。因此,理解设计...

    Android源码设计模式分析

    通过分析Android系统中的设计模式来提升大家对设计模式的理解,从源码的角度来剖析既增加了对Android系统本身的了解,也从优秀的设计中领悟模式的实际运用以及它适用的场景,避免在实际开发中的生搬硬套。

    无废话C#设计模式.doc

    在实践中,设计模式的运用并不是生搬硬套,而是需要根据项目需求进行适当的调整和融合。有时候,简单的解决方案可能比复杂的模式更有效。关键是理解和掌握设计模式背后的意图,而不是机械地复制模式的结构。 总的来...

    设计模式趣谈之我之见解

    在实际项目中,设计模式的运用并不是生搬硬套,而是根据需求灵活选择。比如,对于复杂业务流程,可以使用策略模式来定义一系列可互换的算法;对于处理事件响应,可以利用观察者模式来建立发布/订阅关系。 此外,...

    模式设计(中文版)学习模式设计必备书籍。经典著作

    《模式设计》是一本在IT行业内备受推崇的经典著作,它深入浅出地介绍了设计模式这一程序设计领域的核心概念。设计模式是软件开发中经过实践验证的解决方案,它们为解决常见问题提供了可复用的模板,使得开发者能够更...

    .NET中的设计模式

    设计模式的使用并非生搬硬套,而是根据项目需求灵活运用,它们是解决软件设计问题的工具,而不是固定的公式。 在.NET中实现设计模式时,由于语言特性如泛型、委托、事件等的支持,可以更加便捷地实现各种模式。同时...

    ASP.NET设计模式

    在详细探讨***设计模式之前,首先要了解***作为一种用于构建动态网站、...需要注意的是,在阅读和应用《***设计模式》时,应保持对模式适用场景和限制的认识,避免在不适合的场景下生搬硬套,反而降低软件设计的质量。

    《PHP设计模式介绍》

    设计模式的应用并非生搬硬套,而是根据实际需求灵活选择和组合。理解并掌握这些模式,能帮助开发者写出更优雅、更健壮的PHP代码。通过不断实践和学习,我们可以更好地利用设计模式来应对各种编程挑战,提高软件开发...

    23种设计模式

    创建型模式、结构型模式是软件设计模式中的两种主要类别,它们用于处理对象的创建、组织以及它们之间的关系。设计模式的概念源自建筑学,用于在软件工程领域中提供一种针对特定问题的解决方案模式。 创建型模式关注...

Global site tag (gtag.js) - Google Analytics