博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象设计的五大基本原则
阅读量:3915 次
发布时间:2019-05-23

本文共 1247 字,大约阅读时间需要 4 分钟。

 

一个类只负责一个职责

使用单一职责原则的好处:

1.可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;

2.提高类的可读性,提高系统的可维护性;

3.变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。

需要说明的一点是单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则。

原始定义:

1高层模块不该依赖于底层模块,它们都该依赖于抽象

2抽象不依靠于细节,细节应该依赖于抽象

备注:抽象指的是接口或者抽象类,细节指的是具体的类。依赖一词是对于多个事务而言的,可以理解为依靠

举个例子说明什么叫做依赖:对象A通过调用对象B的方法或者函数,这就可以理解为A依赖于B,因为A只有“依靠”B才能实现某些功能,又如抽象类A中定义了一些公开的方法,类B实现或者继承A中的某些方法,对A的细节进行了完善,那么B就依赖于A的,因为B的基本功能框架是通过继承或者实现A的方法才能实现的

所以一般如果没有考虑依赖倒置的设计,对象与对象之间的依赖是一种直接的依赖,这是一种紧耦合的设计,当依赖的一方变化的时候,依赖的一方也需要被迫进行修改

自顶而下的程序设计中,通常会将某个业务逻辑划分为一个模块,而它的实现是通过一些粒度比较小的功能点进行完成,小的功能点又可以由更小的功能实现,在面向对象编程中,每一个都是对象,所以高层模块的功能是通过许多底层模块的功能实现的,高层模块调用底层模块,也就是高层模块依赖于底层模块。由于没有考虑依赖倒置的设计原则,高层和底层直接就是直接依赖,两者之间的产生强耦合,在开发过程中,底层模块是比较细节的,而细节的东西往往就是比较繁琐的,所以底层模块一旦需要变化,由于高层模块是直接依赖于底层模块,那么高层模块必须跟着变,而开闭原则要求的是程序对修改关闭,对扩展开放。而且频繁的修改高层模块代码,也会很容易引入错误。所以为了解决这个问题,可以对于具体的实现类加上抽象,它们之间的依赖关系不通过具体的实现类,而是抽象之间的依赖,这样的话,字节的类需要变化,不影响高层模块的使用,因为对于高层的模块(或者原来的依赖方)来说,它看到的只是抽象,具体的实现细节是把看不到的。而抽象的比较稳定,不会发生变化,所以高层的模块不需要改变

依赖导致的核心是其面向接口编程,总结其有以下原则:

1尽量不要用直接依赖,而是通过抽象进行依赖,即每个类最好有抽象

2依赖关系的对象引用变量用的抽象的类型

3任何类不要从具体的类派生

4不要重写基类的方法

所有基类出现的地方都可以派生类替换而不会让程序产生错误,派生类可以扩展基类的功能,但不能改变基类原有的功能

对扩展开放,对修改关闭,一个类独立之后就不应该去修改它,而是以扩展的方式适应新需求

客户端不因该强迫依赖它不需要的接口,一个接口应该拥有尽可能少的行为,使其精简单一。对于不同的功能的模块分别使用不同的接口,而不是使用同一个通用接口

转载地址:http://ckprn.baihongyu.com/

你可能感兴趣的文章
iphone开发-地图注解(地图上的大头针)
查看>>
Java:类与继承
查看>>
深入理解Java:String
查看>>
Java异常处理和设计
查看>>
Java设计模式之观察者模式
查看>>
一位资深程序员大牛给予Java初学者的学习路线建议
查看>>
浅谈Java中的hashcode方法
查看>>
Java NIO:NIO概述
查看>>
Java中的static关键字解析
查看>>
Java多态性理解
查看>>
Java IO流学习总结
查看>>
Java发送http的get、post请求
查看>>
Java中volatile关键字的含义
查看>>
给Java程序猿们推荐一些值得一看的好书
查看>>
Java这些冷知识你知道吗?
查看>>
假如时光倒流,我会这么学习Java
查看>>
一位10年Java工作经验的架构师聊Java和工作经验
查看>>
Java项目经验——程序员成长的钥匙
查看>>
假如时光倒流,我会这么学习Java
查看>>
一位资深程序员大牛给予Java初学者的学习路线建议
查看>>