C++设计模式书籍分享--Hands-On Design Patterns with C++

206 阅读3分钟

作者简介

Fedor G. Pikus 是 Mentor Graphics(西门子业务的一部分)Design-to-Silicon 部门的首席工程科学家,负责 Calibre 产品长期技术方向的规划、软件的设计与架构,以及新软件技术的研究。在此之前,他曾担任 Google 的高级软件工程师和 Mentor Graphics 的首席软件架构师。Fedor 是高性能计算和 C++ 领域公认的专家,曾在 CPPCon、SD West、DesignCon 等会议及软件开发期刊上展示他的研究成果,并且是 O'Reilly 的作者之一。他拥有超过 25 项专利,发表了 100 多篇关于物理学、电子设计自动化(EDA)、软件设计和 C++ 的论文及会议演讲。

内容简介

撰写另一本关于设计模式的书籍有几个原因,但首先需要明确的是,这是一本非常专注于C++的书——这不是一本泛泛而谈的C++设计模式书籍,而是深入探讨在C++中如何实现设计模式的专著,这种强调使其与众不同。C++具备传统面向对象语言的所有特性,因此所有经典的面向对象设计模式(如工厂模式和策略模式)都可以在C++中实现。本书涵盖了其中的一部分。然而,真正发挥C++全部潜力的关键在于利用其泛型编程能力。请记住,设计模式是频繁出现的设计挑战及其公认的解决方案——这两方面在模式中同样重要。可以理解的是,当有了新的工具时,就会有新的解决方案成为可能。随着时间的推移,社区会逐渐认同某些解决方案为整体最优,并由此诞生了旧设计模式的新变种——同样的挑战,但有不同的首选解决方案。同时,扩展的能力也开辟了新的领域——随着新工具的可用性,新的设计挑战也随之产生。在这本书中,我们关注的是那些C++可以在模式的至少一个方面提供关键贡献的设计模式。一方面,我们有像访问者模式这样的例子,C++的泛型编程能力允许更优的解决方案。这些更好的解决方案得益于从C++11到C++17版本中添加的新特性。另一方面,泛型编程仍然是编程(只是程序执行发生在编译时);编程需要设计,而设计面临的共同挑战与传统编程并不完全不同。因此,在泛型编程中有许多传统模式的孪生兄弟或至少是近亲,本书主要聚焦于这些模式。一个典型的例子是策略模式,在泛型编程社区中更常被称为策略模式的替代名称——策略模式。最后,像C++这样复杂的语言必然会有其独特之处,这些特性往往导致特定于C++的挑战,这些问题有常见的或标准的解决方案。虽然这些特定于C++的惯用法未必能称为模式,但它们也在本书的讨论范围内。总而言之,这本书撰写的三个主要原因如下:

  1. 涵盖特定于C++的经典设计模式的解决方案:对于普遍存在的经典设计模式,本书提供了特定于C++的解决方案。
  2. 展示泛型编程领域中的旧设计挑战带来的特定于C++的模式变体:当传统的设计挑战出现在泛型编程这一新领域时,本书展示了由此产生的特定于C++的模式变体。
  3. 使我们的模式与时俱进,跟上语言的发展:确保书中讨论的模式能够反映C++语言的最新发展。

代码地址

github.com/PacktPublis…