发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
国庆这两天在家里看了<<面向模式的软件体系结构>>,加上之前看过<<Head First设计模式>>和<<设计模式>>这两本书,总觉得原来高端的东西似乎也没那么神秘,里面的模式自己在工作中也都用到过,并没有怎么特意地去学习,都是自己写代码总结出来的,看了三本设计模式的书,最终记住的模式也没几个,或者说,最终自己也没学到什么东西
谈设计模式一定要谈到面向对象,面向对象的本质是多态,封装和继承,设计模式则能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力
更多的来看,设计模式更像是对于面向对象编程的一种补充,是为了代码的重用性、灵活性和扩展性。但是,不管是重用,灵活,扩展,最起码的基本要求是代码的可读性
为什么C++会遭人唾弃,C语言能受到人们的追捧,一个原因就在于代码的可读性,特别是C++的模板有很多的戏法,有看过<<C++设计新思维:泛型编程与设计模式之应用>>的都知道:C++很酷,但也很复杂。大量的模板技巧写成的库节省了我们大量的时间,但同时出问题也给我们带来了大量的麻烦,因此在工作中,我一直把模板当作一种宏来使用,当然我确实忘记了很多模板的高级技巧,即使知道,我也会尽量避开,模板的作用在于可以帮助我们快速地生成代码,比如教科书的例子:
template
<
class
T1,
T2>
bool
Max(T1 t1,T2 t2)
{
return
t1 > t2;
}
这样无论我们使用的是float或者int,模板都能帮我们生成代码,但是,一旦模板使用开始复杂化,带来的将会是令人晦涩的代码,有兴趣的可以去看看我上面说的这本书,或者STL和BOOST里面的很多技巧,这种戏法对于写基础库的或许需要,但是对于我们工作中,我想还是尽量少用,据说BOOST在C++ 0X之前就已经实现了lambda,惰性求值之类的,网上也有人利用C++实现了反射机制,但是我想,如果语言本身不支持,我们应该去写一些工具来自动生成代码,而不是利用一些戏法来实现,特别是模板
宁愿多写几行代码,也不要去使用一些别人难以看懂的技巧来实现
设计模式中有一些模式是使用多态的,多态是在运行时决定要调用哪个类的,虽然很多人说会降低效率,但是我觉得在现代来说这种效率并不是我们所该关心的,多态能导致的一个问题就是在写成库的时候的问题,具体看这里避免使用虚函数作为库的接口
继承,http://kbasm./blog/1012547,对于继承我觉得并没有什么可以批判的,我觉得合适地选择而非滥用继承,特别是多继承和虚继承最好别用,在现代的高级语言里面,如C# JAVA已经废除了多重继承,一旦C++里面觉得你需要用到多重继承,基本要重新设计类的结构了
封装实际上我觉得更多的事情是在做隔离,在大部分模式中,大部分代码都在隔离原有的代码,将A代码和B代码给隔离,中间件只是一个代理,很简单,因为我一直觉得所有的设计模式都可以归结于代理模式
无论是设计模式还是面向对象,更多的是在做类之间的管理,似乎很多人忘记了编程的本质是对于数据的操控,数据结构+算法=程序,虽然很多人都能说出这一点,但是至今很少的书能专门讲这一部分,面向模式的软件体系结构有一卷就是专门讲这个的
如果要去关心设计模式,不如去关心数据的管理,这对于程序才是最重要的,写了这么多的代码,总觉得无论是设计模式还是面向对象都是虚的,设计的本质就是管理
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
设计模式真的有使用的必要吗? Java频道
"新手"要一个接一个地学习模式,"好手"能够活用模式,"高手"则没有模式。五、 讨论几个具体的模式1、 创建模式(Creational Pattern) 工厂(Factory Method)模式是常...
改良程序的11个技巧
[转]改良程序的11个技巧。当你把代码拿给其他人看时,他必须阅读你的代码。通过使变量常量化(C++里的const, Java里的final),使得编译器能够优化编译,而且使你的代码醒目表达这个变量是不能改变的,...
如何学习设计模式?
如何学习设计模式?在学习设计模式之前,程序员首先理解面向对象的基本概念,比如:封装、继承、多态、组合/聚合、依赖等。先学习设计原则,再学习设计模式。所以掌握了设计原则可以更好地理解设计模式...
程序员面试还怕设计模式,没说我没告诉你这个神奇的网站!
程序员面试还怕设计模式,没说我没告诉你这个神奇的网站!设计模式对于程序员而言并不陌生,每个程序员在编程时都会或多或少地接触到设...
WEB架构师成长系列索引
本人致力于学习面向对象、设计模式、重构、极限编程、大型网站架构设计、管理等知识,希望有不正确之处多多指出,共同学习提高,为了方便查阅,特做出索引一页。第一篇 设计模式。什么是对象,为什么要...
我给媳妇解释设计模式:第一部分
我给媳妇解释设计模式:第一部分.丈夫: 我们尝试着用一种面向对象的方式来开发我们的软件,利用OOD原则来让我们的代码更容易管理、重用和扩展。媳妇: 是啊,那可以省下大把的时间,而且这样打造的软件...
Android设计模式系列(0)
=======================2011-07-29==================================看了很多年的设计模式,也看了很多种设计模式,也在工作中用了几个常见的设计模式。我将以《设计模式:可复用面向对象软件的基础...
java模板方法设计模式
java模板方法设计模式最近重构项目代码,用到的模板方法设计模式最多,在这里简要记录一下模板方法设计模式主要用来抽取多个类中业务代码...
C++程序设计之四书五经(下篇)
关于STL,我还提醒你留心Matthew H. Austern的《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》(《泛型编程与STL》,中国电力出版社)。除了使用C++面向...
微信扫码,在手机上查看选中内容