大卫的Design Patterns学习笔记24:后记

虽然学习、研究设计模式已经很久,但一直未敢动笔写下任何关于设计模式的文章,一则是因为DP属于软件设计技术,较其它实用编程技术,更为抽象,需有认真思考、充分实践才能领会;其二,虽然GoF的DP一书已对所列举的 23种Pattern作了详细的分析、介绍,但要逐一将体会写下来,仍然是一件十分艰巨的任务。因此,从写第一篇概述到现在历时 3月有余(已记不清其间有多少次为了举一个贴切的例子苦恼到深夜;原本计划用 1个月的时间完成全部文章,由于写作期间理解的加深,不断有新东西需要加入,以至于完成日期不断推后),我没有将写完的文章马上贴出来,而是一直等到写完了全部计划的 20余篇文章才一起贴出来,除了考虑到在写作后面的文章时,随着理解的深入,可能需要对前面的文章进行修改,另一个重要的原因在于,写作的过程确实需要有足够的耐心,而且,由于日常工作的原因,我在写作之初实在无法预见到自己是否有足够的时间,足够的耐心来完成全部文章。
在写作的过程中,视讨论的主题的复杂程度,以讲清楚为主,我并没有采用一致的叙述方式,希望这不会影响读者的阅读。
今天,终于完成了最初计划的该系列全部文章的写作(由于最近工作日趋繁忙,不得已取消了一少部分内容,包括:基本OO设计原则、各模式比较 <前面已大致作了比较,只是想再集中总结一下 >、扩展设计模式 <23种设计模式以外的模式 >)。
写作过程中,除了参考了概述中所列举的几本重要DP书籍外,还参考了一些网上的DP讨论或者相关文章,在此不再一一列举,仅在此对他们表示感谢。
整个系列是我DP学习的一个总结,我将整个系列命名为学习笔记,也是希望能够在今后随着自己学习、体会的深入,以及与大家讨论的深入,能够不断将其完善。希望我的这一DP系列能给初学者一些指引,同时希望各路Experts多提宝贵意见,指出我文章中的不足和错误之处,我一定及时修改、完善。
最后,需要再次说明的是设计模式需要多思考,多联系实际,它并不是空泛的理论,它是可资利用的OOD利器,愿大家都能通过实践掌握Design Patterns这一利器,更加冷静地面对变化的需求和不断膨胀的代码。

附:
在写作这一系列文章的过程中,偶然从Martin Fowler(OO界大师级人物及技术作家)的网页(http : //martinfowler.com/bliki/OOPSLA2004.html)上了解到,OOPSLA2004通过小组讨论,认为GoF列出的23中典型设计模式中的以下四种:
Factory Method
Bridge
Flyweight
Interpreter
由于缺乏通用性,可以被其它模式替代等原因,被建议取消。
但是,即便如此,由于以上模式已被广泛学习和研究,我认为在实际当中,以上四个被建议取消的模式仍然存在一定的适用性,仍然值得我们去学习。
目前在设计模式的研究方面,与GoF的DP一书所提出的通用软件设计模式不同,目前涌现的新的设计模式主要为应用型设计模式,如Martin Fowler在其Patterns of Enterprise Application Architecture中提出的Web Server Patterns、Distribution Patterns等,Bruce Powel Douglass在其Real -time Design Patterns提出的Real -time Design Patterns等,由此使得Pattern与Framework的界限变得更加模糊。
Martin Fowler作为OO研究领域的大师级人物,在其书中也提出了一些通用软件设计模式,但目前对于新的软件设计模式的研究并没有充分展开。据说Linda Rising的 <Pattern Almanac >收录的至 2000年的模式的种类多达 700余种,但显然该书并没有得到普遍的认同,以至于对该书所列举的模式进行研究的文章还很难找到。参考 12分别给出了一些GoF的 23种设计模式以外的模式,但并没有深入的讲解,因此,要加以利用还有一定的困难,感兴趣的朋友可以去看一下。
目前面世的DP书籍(包括我在笔记 1 中提到的GoF的DP一书以外的几本书)几乎无一例外循着GoF指定的路线,指定的语言在讨论问题,同样,我的这一系列也无法出其右,做到有所突破,虽然我一直努力在整个系列中多融入一些自己的心得体会,试图将问题按照我的理解叙述得更加清楚。所以,如果你真的对设计模式感兴趣,建议你认真阅读GoF的DP一书(如果你还没有这样做过,或者,这样做过,但上次阅读时没有完全读懂)。

由于时间的关系,我最终放弃了将扩展设计模式(即 23种经典模式以外的模式)的研究纳入本系列的想法,感兴趣的朋友可以深入研究Martin Fowler的书以获得更多有关软件设计模式的知识。

参考:
1
、http : //msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/EspPattlets.asp
2、http : //patternshare.org/default.aspx/Home.TableColumns

Bill David
最终修改于 2005618日夜
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
现代C++中的设计模式是用于对象重用的可重复性方法。设计模式是一种在不同情况下解决相似问题的经验总结,可以通过将问题解决方案的关键部分抽象出来,从而提供灵活性和可重用性。设计模式不是编程语言特定的功能,而是一种通用的方法论。 在现代C++中,有许多常用的设计模式可以用于对象的可重用性。以下是几个常见的设计模式示例: 1.单例模式:用于确保一个类只能创建一个实例,并提供对该实例的全局访问点。对于有些对象只需要一个实例的情况,单例模式可以确保该实例的唯一性,从而方便访问和管理。 2.工厂模式:用于创建对象的过程中封装创建逻辑,让客户端代码无需关心对象的具体创建细节。通过工厂模式,可以通过一个工厂类来创建对象,从而提供更高的灵活性和可扩展性。 3.观察者模式:用于对象之间的发布-订阅机制,让一个对象(主题)的状态发生变化时,能够通知并自动更新其他依赖于该对象的对象(观察者)。通过观察者模式,可以实现对象之间的松耦合和消息传递,提高对象的可重用性和可维护性。 4.适配器模式:用于将一个类的接口转换成客户端所期望的另一个接口。适配器模式可以解决接口不兼容的问题,从而使得原本不兼容的类能够一起工作,提高可重用性和互操作性。 5.策略模式:用于定义一系列算法/行为,并将其封装成独立的类,使得它们可以互相替换。策略模式可以在运行时根据需要动态切换算法/行为,从而提供更高的灵活性和可重用性。 这些设计模式都是在现代C++中常见且有用的重用性方法,可以根据具体的应用场景选择合适的设计模式来提高代码的可维护性、可扩展性和可重用性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值