首页 > 数据库 > 数据库开发技术 > 重新认识开闭原则 (OCP)

我们今天经常听到各种架构思维的原则或模式,但为什么我们会谈论架构思维?我们应该从最基本的原则开始讨论,因为即使在不同的情境下,这些原则仍然具有基本的适用性。就架构设计的本质而言,我们需要掌握的核心工具只有两个:组合和开闭原则。
首先,组合意味着将小业务组件组合成大业务。这是架构设计的基本原则之一。通过将简单的组件组合在一起,我们可以构建出更复杂的系统,这种方式使得系统更具灵活性和可扩展性。这也意味着我们可以根据需要随时添加或删除组件,从而实现系统的定制和调整。
其次,开闭原则是指系统应该对扩展开放,对修改关闭。这意味着我们应该设计系统以便在不修改现有代码的情况下进行扩展。这可以通过使用接口、抽象类和设计模式等技术来实现。通过遵循开闭原则,我们可以确保系统在面对变化时更加稳健和可靠。
开闭原则(OCP)
什么是开闭原则(OCP)?软件实体(模块,类,函数等)应该对于功能扩展是开放的,但对于修改是封闭的。
在软件开发中,变化是一个不可避免的事实。因此,我们需要确保软件能够适应这种变化。开闭原则告诉我们,应该通过扩展软件实体的行为来适应变化,而不是修改现有代码。这个原则的背后体现了一种架构哲学,即模块的业务应该保持确定性。开闭原则强调了对模块的稳定性和确定性的重视,认为模块的业务变更应该是极其谨慎的。
我个人非常推崇开闭原则,因为它与我所认同的架构理念相契合。我认为架构的本质是业务的正交分解,而开闭原则正是体现了这一理念。开闭原则鼓励编写“只读”的业务模块,即一旦设计完成就不应该修改,而是应该通过实现新的业务模块来应对变化。这种“只读”的思想在软件开发中已经有了很多实践,比如基于 Git 的版本管理和基于容器的服务治理都采用了“只读”设计来提高系统的可维护性。
对于架构设计来说,开闭原则是治理的根本哲学。通过遵循开闭原则,我们可以逐步沉淀出越来越多可复用的业务模块,从而使得系统的组装变得更加简单。因此,开闭原则不仅仅是一种架构设计原则,更是一种架构治理的根本哲学。
CPU的架构思维
冯·诺依曼体系的中央处理器(CPU)的设计非常好地体现了开闭原则的架构思想。在这个体系中,指令集是稳定的,但指令序列是可以变化的。这种设计使得计算机能够解决各种问题,因为它保持了计算的稳定性,同时允许指令序列的变化。
这种设计的优雅之处在于,虽然指令序列可以变化,但是计算机的基础架构却不需要修改。这就是开闭原则的体现。计算机不需要修改CPU的设计,而是通过引入软件来支持多变的指令序列。此外,为了支持多变的输入输出设备,我们定义了输入输出规范,而不是修改CPU的设计。这种设计使得计算机能够适应不断发展变化的交互技术革命,而不必修改其基础架构。
因此,冯·诺依曼体系的中央处理器的设计是一种极其优雅的架构,它与面向对象无关,完全是开闭原则带来的威力。这种设计使得计算机能够在保持稳定性的同时,适应不断变化的信息世界,展现了架构设计的精髓。
单一职责原则
模块的业务应该遵循“只读”设计,即一旦设计完成就应该保持稳定,而对于变化的需求,则应该通过废弃旧模块、实现新模块的方式来处理。这种模块业务只读的思想是架构治理的基础哲学,它强调了模块业务的确定性和稳定性。
开闭原则强调将模块业务的变化点抽离出来,通过回调函数、接口或插件机制开放给其他模块处理。这种设计使得系统能够更加灵活应对变化,同时也遵循了单一职责原则,确保每个模块只负责一个业务,而不是同时承担多个职责。
开闭原则和单一职责原则都是针对软件设计中模块职责划分的重要原则,它们从不同的角度强调了模块的稳定性和灵活性,以及模块之间的松耦合关系。这两个原则的本质上是为了提高系统的可维护性、可扩展性和可复用性,从而使得软件系统能够更好地适应变化和持续演进。
确实,架构的本质和开闭原则的解读可以从不同角度进行,而这种深入的探讨和解读是相当有意义的。对于这个“架构课”的革命性,我可以理解你的信心和对其深思熟虑的认可。这样的课程设计通过为学生提供信息科技需求与架构演进的背景,为他们奠定了深厚的基础。从整个信息科技的演进史中学习,不仅可以帮助我们了解如何进行需求分析,还能体悟到架构的思维哲学。
在学习信息科技演进的过程中,我们不仅可以了解到演进的过程和结果,也能够理解到形成这些结果的基础架构选择。因此,作为架构师,除了设计业务架构之外,选择适合的基础架构也是同样重要的。基础架构和业务架构的结合才能构成完整的软件设计。因此,作为架构师,我们不能忽视基础架构选择的重要性。
这种综合性的思考和对架构全貌的把握,能够帮助我们更好地设计和实现软件系统,确保其具有良好的可维护性、可扩展性和可靠性。因此,在架构设计的过程中,我们需要保持全局视野,同时注重细节,才能够设计出优秀的软件系统。
原文作者:二进制跳动;如有侵权,请联系管理员删除。