作者: | Matthias Noback |
语言: | 英文 |
出版年份: | 2019 |
下载链接: |
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。 |
《Object Design Style Guide》是由Matthias Noback撰写的一本专注于面向对象设计风格的指南书籍,由Manning Publications出版。本书旨在为面向对象程序员提供一套清晰、一致的设计原则和实践方法,帮助他们提升代码质量和可维护性,填补了从基础编程到高级设计模式之间的教育空白。
本书首先介绍了面向对象编程的基本概念,包括类和对象、状态、行为、依赖、继承、多态、组合等。通过这些基础知识的讲解,为后续深入探讨设计风格奠定了理论基础。
服务对象是本书讨论的重点之一。作者强调服务对象应该通过构造函数注入所有依赖项和配置值,并且在实例化后保持不变(不可变)。服务对象不应依赖于服务定位器,而应明确声明其依赖关系。此外,服务对象的行为应在构造时完全确定,不应在运行时通过方法调用改变其行为。
除了服务对象,书中还讨论了其他类型的对象,如实体(Entities)和值对象(Value Objects)。这些对象通常用于存储数据,并且可以被服务对象操作。作者建议在创建这些对象时,应确保它们具有足够的数据以保持一致性,并且只接受有意义的数据。此外,还应避免在对象内部重复验证领域不变量,而是通过引入新的对象来封装这些逻辑。
本书详细讨论了如何操纵对象以及如何比较对象。作者建议优先使用不可变对象,因为它们的行为更加可预测,并且可以安全地在多个地方重用。对于可变对象(如实体),则应通过内部记录的事件来跟踪变化,并在修改对象时验证状态转换的有效性。
作者提出了一套方法实现的模板,包括前置条件检查、失败场景处理、正常执行路径以及后置条件检查等。此外,还讨论了异常处理的原则,建议仅在必要时使用自定义异常类,并为异常类提供详细的错误消息。
在信息检索方面,作者建议使用查询方法(Query Methods),这些方法应具有单一返回类型,并避免暴露对象的内部状态。对于执行任务的方法(Command Methods),则应使用命令式命名,并限制方法的作用范围,将次要任务通过事件分发给其他服务处理。
作者强调应将写模型(Write Models)与读模型(Read Models)分离,为不同的用例创建专门的读模型。读模型可以直接从数据源构建,或者通过领域事件逐步构建,以提高效率和性能。
本书讨论了如何在不修改代码的情况下改变服务的行为。作者建议通过构造函数参数使行为可配置,通过依赖注入使行为可替换,并通过引入抽象来实现更复杂的行为组合。此外,还应避免使用继承来改变对象的行为,而是通过装饰器模式(Decorator Pattern)或事件监听器来添加额外的行为。
本书适合有一定面向对象编程基础的程序员阅读。无论是刚刚完成基础编程课程的新手,还是已经多年从事面向对象编程的资深开发者,都能从本书中获得有价值的建议和指导。
《Object Design Style Guide》是一本实用性强、内容丰富的设计风格指南。它不仅提供了面向对象设计的具体规则和建议,还通过丰富的代码示例和练习帮助读者更好地理解和应用这些原则。通过阅读本书,开发者可以提升自己的编程技能,编写出更加清晰、一致且易于维护的代码。