软件设计模式原则详解:单一职责原则和开闭原则

需积分: 14 2 下载量 201 浏览量 更新于2024-09-09 收藏 615KB PDF 举报
设计模式详解 设计模式是软件设计中的一种解决方案,它提供了一些通用的设计原则和模式,帮助开发人员编写出更加灵活、可维护、可扩展的代码。下面是设计模式的两大原则:单一职责原则和开闭原则。 **单一职责原则(Single Responsibility Principle, SRP)** 单一职责原则是指一个类的职责应该是单一的,不应该承担太多的职责。这个原则的目的是为了提高代码的可维护性和可扩展性。 **定义**:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。即一个类应该只有一个原因使其变化。 **原则分析**: 1. 一个类承担的职责越多,它被复用的可能性越小。如果一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作。 2. 类的职责主要包括两个方面:数据职责和行为职责,数据职责通过其属性来体现,而行为职责通过其方法来体现。 3. 单一职责原则是实现高内聚、低耦合的指导方针,在很多代码重构手法中都能找到它的存在。它是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,而发现类的多重职责需要设计人员具有较强的分析设计能力和相关重构经验。 **例子**: 最简单的例子是:一个数据结构职责类和算法行为都放在一个类User。我们应该把数据结构和行为分开。现使用单一职责原则对User类进行重构。 **优点**: 1. 降低类的复杂性,类的职责清晰明确。比如数据职责和行为职责清晰明确。 2. 提高类的可读性和维护性。 4. 变更引起的风险减低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的类有影响,对其他接口无影响,这对系统的扩展性、维护性都有非常大的帮助。 **注意**:单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否合理,但是“职责”和“变化原因”都是没有具体标准的,一个类到底要负责那些职责?这些职责怎么细化?细化后是否都要有一个接口或类?这些都需从实际的情况考虑。因项目而异,因环境而异。 **开闭原则(Open-Closed Principle, OCP)** 开闭原则是指一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭。意思是,在一个系统或者模块中,对于扩展是开放的,对于修改是关闭的。 **定义**:一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭。意思是,在一个系统或者模块中,对于扩展是开放的,对于修改是关闭的。 开闭原则是设计模式的核心原则,它提供了一种灵活的设计方式,使得系统更加灵活和可维护。这个原则可以帮助开发人员编写出更加灵活、可维护、可扩展的代码。