|
【软件简介】英文名:Modern C++ Design: Generic Programming and Design Patterns Applied 中文名:C++设计新思维——泛型编程与设计模式之应用
图书简介转自:http://www.welan.com/bookdetail/more.asp?type=1&booid=40500 Modern C++ Design是一部重要的著作,它从根本上层示了generic patterns(泛型模式)或pattern templates(模式模板),并将它们视之为“在C++中创造可扩充设计”的一种功能强大的新方法,这种方法结合了template和patterns,你可能未曾想过,但的确存在。如果你的工作涉及C++设计和编程。那么你应该阅读本书。我极力推荐。 ——Herb Sutter 关于C++,还有什么没被说过的?很多,本书证明了这一点 ——节录自John Vissides为本书所作的序 在Modern C++ Design中,Andrei,Alexandrescu为C++程序员开创了一个新天地。在展现非凡创造力和精湛编程技艺的同时,Alexandrescu提供了融合design patterns(设计模式)、generic programming(泛型编程)、C++等在内的尖端设计技术。帮助程序员撰写清晰、灵活、高度可复用的代码。 本书提出generic components(泛型组件)的概念,这是一种可复用的设计模板(reusable design templates),用来产生规范的C++代码,供编译器使用。泛型组件提供了从design到code之间简易而无缝的过渡,产生出更能表达原始设计意图的代码,并支持设计结构的复用 只需更动最少量的代码。 作者阐释建造泛型组件所需的C++专门技巧和特性。而后针对现实世界中的应用,提供工业强度之泛型组件实现品。对于C++开发人员日常工作中反复遇到的问题,在此进行了深入的探讨,并通过泛型方式实现。内容包括: ·高度灵活的policy based design ·Partial template specialization(模板偏特化) ·Typelists,一个功能强大、用于型别操控的结构 ·Visitor、Singleton、Command、Factories等模式(patterns) ·Multi-method engine 针对每一个泛型组件,本书都提出了基本问题和设计选择,最后实现其泛型解决方案。此外,本书相关网站http://www.awl.com/cseng/titles/0-201-70431-5提供书中泛型组件的所有实现品,并提供作者发展的一个免费、可下载的C++程序库Loki。Loki几乎可为任何C++项目提供借鉴。 本书提供了一组可复用的设计产品 ─ 所谓“泛型组件”,以及设计这些组件所需要的技术。这些泛型组件为用户带来的明显好处,集中于程序库方面,而处于更广泛的系统体系结构空间中。本书提供的编程技术和实作品(implementation)所反映的任务和议题,传统上落于设计范畴之中,是编写代码之前必须完成的东西。由于身处较高层次,泛型组件就有可能以一种不同寻常但简洁。易于表达。易于维护的方式,将复杂的体系结构反映到代码中。 这里结合了三个要素:设计模式(design patterns)、泛型编程(generic programming)、C++。结合这些要素后,我们获得极高层次的可复用性,无论是横向或纵向。从横向空间来看,少量library code就可以实现组合性的、实质上具有无穷数量的结构和行为。从横向空间来看,由于这些组件的通用性,它们可广泛应用于各种程序中。 本书极大归功于设计模式(design patterns)— 面临面向对象程序开发中的常见问题时,它是强有力的解决方案。设计模式是经过提炼的出色设计方法,对于很多情况下碰到的问题,它都是合理而可复用的解决方案。设计模式致力于提供深具启发、易于表达和传递的设计词汇。它们所描述的,除了问题(problem)之外,还有久经考验的解法及其变化形式,以及选择每一种方案所带来的后果。设计模式超越了任何一种设计语言所能表达的东西 ─ 无论那种语言多么高级。本书遵循并结合某些设计模式,提供的组件可以解决广泛的具体问题。 泛型编程是一种典范(paradigm),专注于将型别(type)抽象化,形成功能需求方面的一个精细集合,并利用这些需求来实现算法。由于算法为其所操作的型别定义了严格、精细的接口,因此相同的算法可以运用于广泛的型别集(a wide collection of types)。本书提供的实作品采取泛型编程技术,以最小代价获得足以和手工精心编写的代码相匹敌的专用性。高度简洁和效率。 C++ 是本书使用的唯一工具。在本书中,你不会看到漂亮的窗口系统。复杂的网络程序库或灵巧的日志记录(logging)机制。相反的,你会发现很多基础组件,这些组件易于实现以上所有系统(甚至更多)。C++ 具有实现这一切所需要的广度,其底层的C内存模型保证了最原始效率(raw performance),对多态(polymorphism)的支持成就了面向对象技术,templates则展现为一种令人难以置信的代码生成器。Templates遍及本书所有代码,因为它们可以令用户和程序库之间保持最密切的协作。在遵循程序库约束的基础上,程序库的用户可以完全控制代码的生成方式。泛型组件库的角色在于,它可以让用户指定的型别和行为,与泛型组件结合起来,形成合理的设计。由于所采技术之静态特性,在结合和匹配相应组件时,产生的错误通常在编译期便得以发现。 本书最明显的意图在于创建泛型组件,这些组件预先实现了设计模块,主要特点是灵活、通用、易用、泛型组件并不构成framework。实际上它们采用的作法是互补性的,虽然framework定义了独立的classes,用来支持特定的对象模型,但泛型组件(s) 是轻量级设计工具,互相独立,可自由组合和匹配。实现frameworks时泛型组件可带来很大帮助。
I collected it from the Internet, of which the copyright is retained by the Original Author. If I have violated your copyright by any chance, please contact me, I'll delete it immediately.
|