OCP(open-close-principle)开闭原则【最核心的法则】:
对扩展开发,对修改关闭;就是说不允许修改的是抽象类和接口,允许扩展的是具体的实现类。
举个简单的例子:比如一个系统里有分类这个概念,比如人与分类有关联,书籍与分类有关联,文章与分类也有关联...当需要查找某个人的分类时,就会在分类的service写个方法,来获取人的分类信息,当需要查找某本书的分类信息时,继续在分类的service里边添加另一个查找书籍分类的方法,照这样下去,这个类就会膨胀,没完没了,这就违反了开闭原则。可以采用分离的方法来解决这个问题:建一个分类的service接口,定义好需要的公用方法(这里是查找分类信息),然后建立对应的实现分类service接口的实现类,如PersonServiceImpl,这个专门用来查找人的分类,创建BookServiceImpl专门用来查找书籍的分类信息;OCP中,抽象化是关键,将可变的因素分块封装起来,避免超大类,超长类,超长方法。
LSP(Liskov Substitution Principle)里氏替换原则:
任何基类可以出现的地方,子类也可以出现。
尽量不要重写父类已经实现的方法,如果一定要重写,那么可以将原来的父类和子类都继承一个通用的基类,然后把原来的继承关系去掉。
接口隔离法则:使用对个专门的接口比使用单一的总接口要好
迪米特法则:一个对象对其他对象应该有最少的了解
依赖倒转原则:针对接口编程,不针对实现编程
单一职责原则:对于类尽量做到单一职责,但是对于方法一定要做到
----------------待续
相关推荐
### 设计模式之我见 #### 设计模式的定义与意义 设计模式(Design Pattern)是一种在软件开发过程中被广泛采用的方法论,它基于一系列反复验证的解决方案,旨在提高代码的可读性、可重用性和可靠性。设计模式是...
"设计模式之我见源代码"系列是作者分享的设计模式实践和理解,通过源代码的形式帮助读者深入理解和应用设计模式。 在提供的压缩包文件中,我们看到几个关键的目录和文件: 1. `.classpath`:这是一个Eclipse项目...
设计模式原则:单一职责原则,里氏替换,依赖倒转,接口隔离,开放关闭等等。
详细介绍了设计模式六大原则,配有示例代码和图片,有开闭原则,单一职责原则,里氏替换原则,依赖倒置原则,接口隔离原则,迪米特法则等等。
24种设计模式介绍与6大设计原则24种设计模式介绍与6大设计原则
设计模式是软件开发中的一种最佳实践,它基于一套核心原则来指导我们编写可维护、可扩展的代码。在这篇文章中,我们将深入探讨设计模式的六大原则,这些原则是理解并有效应用设计模式的基础。 首先,我们要了解“开...
1. **设计原则**:面向对象设计模式的基础,如单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。这些原则指导我们编写可维护、可扩展的代码。 2. **常见设计模式*...
在这些设计模式和原则中,策略模式是一个非常重要的行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换使用。策略模式让算法的变化独立于使用算法的客户端。 以提供的文档内容为例,...
作者提到他“可以扩展多种‘蝉’”,这暗示了设计模式中的开闭原则(Open/Closed Principle),即软件实体应该对扩展开放,对修改封闭。这样,当系统需要增加新的功能时,可以增加新的类或模块,而无需修改现有代码...
本文件《设计模式与设计原则.pdf》中,将详细地探讨设计模式以及与之相关的六大设计原则。 首先,设计模式主要分为三类: 1. 创建型模式(Creational patterns):这些模式提供了一种在创建对象的同时隐藏创建逻辑...
面向对象设计原则:面向对象设计原则、开闭原则、里氏替换原则、里氏替换原则、里氏替换原则
设计模式之我见论文,格式严谨,含摘要、关键字、参考文献、致谢,适合做课程论文。只需修改名字便可使用,本文绝对原创,视角独到。
里氏转换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的基本原则之一,它是SOLID原则中的L原则。这个原则是由Barbara Liskov在1987年提出的,它规定子类型必须能够替换它们的基类型,而不影响程序...
这个PDF文档“24种设计模式介绍与6大设计原则”旨在帮助开发者理解和应用这些模式,提高代码的可维护性和可扩展性。以下是其中的主要内容: 一、设计原则 1. 单一职责原则:一个类或模块应只有一个引起其变化的原因...
4. **依赖倒置原则**:这是SOLID原则之一,它强调依赖于抽象而不是具体实现。在C#中,这通常意味着高层模块不应该依赖于低层模块,两者都应依赖于抽象。通过这种方式,系统更加灵活,易于扩展和测试。 5. **工厂...
面向对象设计模式是软件开发中的重要工具,它们是经过时间考验和广泛实践验证的设计解决方案,旨在提高代码的可重用性、灵活性和可维护性。...因此,学习和掌握面向对象设计模式是每个C#程序员必备的技能之一。