网站首页 > 资源文章 正文
六原则一法则
- 单一职责原则
- 开闭原则
- 依赖倒转原则
- 里氏替换原则
- 接口隔离原则
- 合成聚合复用原则
- 迪米特法则
单一职责原则
一个类只做它该做的事情。
单一职责原则的核心就是高内聚,即一个 模块只完成一项功能。单一职责,顾名思义就是一个类只有一个职责,只做一件事情。我们在大学里学的软件工程和软件项目管理中,老师都在强调软件设计要追求“高内聚、低耦合”,以提高模块的重用性和移植性,而单一职责原则就很好的说明了高内聚。
开闭原则
一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
开闭原则的关键就是抽象化,我们在代码编写的时候,先利用接口和抽象类构建好一个相对稳定的抽象层,而将具体的功能在实现层中编写。如果需要修改或扩充系统的行为,无须对抽象层进行任何改动,只需要增加新的具体类来实现新的业务功能即可,达到在进行功能拓展时无序修改现有代码的效果,达到开闭原则的要求。
依赖倒转原则
程序要依赖于抽象接口,不依赖于具体实现。
直白的讲就是我们常提到的面向接口编程。声明方法的参数类型、方法的返回类型、变量的引用类型时,尽可能使用抽象类型而不用具体类型,因为抽象类型可以被它的任何一个子类型所替代。
里氏替换原则
任何时候都可以用子类型替换掉父类型。
因为子类是增强父类的能力,而不是减少父类的能力,所以用父类型的地方就一定能使用子类型。里氏替换原则可以检查继承关系是否合理,如果一个继承关系违背了里氏替换原则,那么这个继承关系一定是错误的,需要对代码进行重构。
接口隔原则
接口要小而专,绝不能大而全。
不能把接口设计的过于臃肿和复杂。例如,琴棋书画就应该分别设计为四个接口,而不应设计成一个接口中的四个方法,因为如果设计成一个接口中的四个方法,那么这个接口很难用,毕竟琴棋书画四样都精通的人还是少数,而如果设计成四个接口,会几项就实现几个接口,这样的话每个接口被复用的可能性是很高的。
合成聚合复用原则
优先使用聚合或合成关系复用代码。
组合和聚合都是对象建模中关联(Association)关系的一种。聚合表示整体与部分的关系,表示“含有”,整体由部分组合而成,部分可以脱离整体作为一个独立的个体存在。组合则是一种更强的聚合,部分组成整体,而且不可分割,部分不能脱离整体而单独存在。在类与类之间简单的说有三种关系,Is-A关系、Has-A关系、Use-A关系,分别代表继承、关联和依赖。聚合和合成都属于关联关系。
其他大佬那里看到的一个比较好的例子:
我们需要办理一张银行卡,如果银行卡默认都拥有了存款、取款和透支的功能,那么我们办理的卡都将具有这个功能,此时使用了继承关系:
为了灵活地拥有各种功能,此时可以分别设立储蓄卡和信用卡两种,并有银行卡来对它们进行聚合使用。此时采用了合成复用原则:
迪米特法则
一个对象应该对其他的对象有尽可能少的了解,又叫最少知识原则。
这个具体讲指的就是低耦合,由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。设计模式中的门面模式(Facade)和中介模式(Mediator),都是迪米特法则应用的例子。
门面模式(Facade)
其含义时引入一个第三方中介类,这个类集合了多个零部件类的功能,实际功能则委托给这些零部件对象,这个类只是做为对外统一接口,只是一个马甲。
中介模式(Mediator)
其含义是用一个中介对象来封装一系列的对象交互。中介者使个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。即通过一个中介类接受所有消息,然后再进行转发。
- 上一篇: 面向对象:用技术方法思考产品设计
- 下一篇: 面向对象有哪“六原则一法则”(面向对象的八大原则)
猜你喜欢
- 2024-09-18 无门槛快速学编程——Python小短课,三探面向对象
- 2024-09-18 Python中的“实例化对象”——掌握面向对象编程的核心技能
- 2024-09-18 面向过程和面向对象最通俗的解释(面向对象和面向过程的概念和区别)
- 2024-09-18 Python | 面向对象如何快速实现(一)
- 2024-09-18 漫画:如何通俗易懂地解释面向对象思想?
- 2024-09-18 一文让你掌握Python面向对象的编程思维
- 2024-09-18 什么是面向对象,看这一篇就够了(什么叫面向对象)
- 2024-09-18 C#自学——面对对象(OOP)(c#面向对象的编程)
- 2024-09-18 面向对象:静态方法、类方法、属性方法
- 2024-09-18 Delphi基础教程图文版之初识面向对象
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)