通过分层实现‘有一个’或‘用来实现’

需积分: 0 0 下载量 158 浏览量 更新于2024-09-20 收藏 33KB DOC 举报
"条款40 通过分层来体现‘有一个’或‘用...来实现’,这是 Effective C++ 中的建议,强调了类之间的关系和实现方式。分层、构成、包含或嵌入是同一概念,指的是一个类包含其他类的对象作为其数据成员。这种设计模式有助于体现‘有一个’的关系,比如 Person 类拥有 name、address 和 phone numbers。" 在C++编程中,分层是一种重要的设计原则,它允许我们构建复杂系统时,将功能拆分为多个独立的组件,每个组件负责特定的责任。通过将一个类的对象作为另一个类的数据成员,我们可以创建出具有层级结构的类体系,这种结构反映了类之间的“有一个”关系。在提供的例子中,Person 类包含了 string、Address 和 PhoneNumber 类的对象,表示一个 Person 对象拥有这些属性。 分层与公有继承不同,公有继承通常表示“是一个”关系,如子类继承父类,表明子类是父类的一种特例。而分层则表示“有一个”关系,一个对象包含或使用另一个对象来实现其功能。例如,Person 不是 Address 或 PhoneNumber,但它有一个 Address 和一个 PhoneNumber。 在讨论“用来实现”时,条款提到了集合类模板的需求,例如表示不重复元素的集合。在C++标准库中,set 模板是用于此目的的一个选择,但有时其要求元素完全有序可能不适用于所有情况。如果需要一个不依赖完全有序性的集合,可能需要自定义一个类来适应这种“用来实现”的需求,这可能是出于性能、灵活性或其他特定需求的考虑。 条款40 提醒开发者理解并正确使用分层来体现“有一个”或“用...来实现”的关系,这有助于提高代码的可读性、可维护性和设计的灵活性。同时,它鼓励根据具体需求选择适当的实现策略,如利用现有库或自定义解决方案,以达到最佳效果。在实际编程中,应权衡重用和定制之间的平衡,以满足项目的特定要求。