我们发现设计模式在Java社区很流行,但是在C++社区却没有那么被关注,甚至有点被排斥,究竟是什么原因造成这个差异的呢?

   昨天和同事讨论这个问题,最后得出几点原因:

    (1)C++内存需要自己管理,所以有些模式在C++里使用不是那么方便,但是Java不用关心内存,所以在Java里的使用设计模式有天生的优势。随着shared_ptr, weak_ptr, unique_ptr等加入C++11,相信这方面会有所改进。

   (2)在Java的类库体系中,很多设计本身就是基于设计模式的,所以在调用Java类库时,你会不知不觉地使用设计模式,这样导致你在设计自己的接口时也会使用设计模式。

   (3)C++一般被用来解决一些比较底层的问题,所以用C++时,我们更多的关心是如何实现某个feature; 但是Java借助其丰富的类库,实现feature往往不是问题,所以他们有更多精力关注设计。

   (4)设计模式一般要间接层,会造成性能的损失,而C++应用的场合往往比较强调性能。对于这个问题,如果你的程序更注重性能(比如内核),确实不应该引入太多间接层;但是如果你的程序更注重可扩充性和可维护性,你就该考虑设计模式了。

   (5)C++社区的很多程序员是从c甚至汇编转过来的,所以这些人更习惯面向过程的设计方式,即使用C++也只是拿来封装一些简单的类,用不到设计模式。

   (6)C++支持多种编程模型,包括面向过程,面向对象,基于对象,泛型编程等,设计模式主要是基于面向对象的,而Java只支持面向对象开发。

   最后贴张某校的招生海报,你看看究竟是C, 还是C++?你是怎么看设计模式在C++社区的使用情况呢?

    
posted on 2012-06-14 09:22 Richard Wei 阅读(5330) 评论(13)  编辑 收藏 引用 所属分类: 设计模式

FeedBack:
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-06-14 10:53 | 春秋十二月
好漂亮的MM呀  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-06-14 11:16 | Richard Wei
@春秋十二月
看来你没看懂, C or C++ :)  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-06-14 12:26 | 罗朝辉
江大=江南大学?  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-06-14 12:40 | zgpxgame
@罗朝辉
浙江大学  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-06-14 13:16 | young40
@Richard Wei

我也没有看懂, 和C, C++什么关系呢? 为什么不是java呢?   回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?[未登录]
2012-06-14 13:41 | 春秋十二月
@Richard Wei
C或C++罩杯?  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-06-15 09:24 | Richard Wei
@春秋十二月
恩,你长大了 :)  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-06-15 16:21 | leolai
好吧,Orge就是一堆设计模式堆起来的  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-06-15 16:52 | Richard Wei
@leolai
是的,设计模式在比较大型的C++开源项目中用的还是比较多的,比如网络库ACE,界面库QT,游戏引擎Orge, Irrlicht等  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-06-20 11:04 | 毕达哥拉斯半圆
完全不是那么回事,设计模式在C++里用的很多,可能有两个原因造成这个错觉:1,c++有多种编程风格,看你用哪个;2,现在java比c++热,初学者多学java,因此说的比较多而已。  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-06-20 11:12 | Richard Wei
@毕达哥拉斯半圆
不错, 新加了
(6)C++支持多种编程模型,包括面向过程,面向对象,基于对象,泛型编程等,设计模式主要是基于面向对象的,而Java只支持面向对象开发。  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2012-07-09 16:16 | 哥没注册
在偏底层里面一般都是打散重组使用,在高级语言里面,则多数是被套用。
孰优孰劣一眼可望  回复  更多评论
  
# re: 为什么设计模式在C++社区没有Java社区流行?
2013-10-19 22:38 | 小胖
面向妹子,面向对象,C++
哈哈  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理