面向对象的六大设计原则

爬虫那些事-网页爬虫设计思路 一、前言 爬虫广泛使用于搜索引擎、新闻聚合以及大数据采集当中,一个良好的爬虫系统需要考虑很多方面:爬虫种子的获取需要有个稳定的任务调度机制,下载页面过程需要考虑到网页内容的生成是否是需要js渲染,请求网页是否需要设置请求头,还有请求过多会不会被对方封锁。另外就是数据处理过程,什么页面需要进行数据提取,什么页面是分裂成其它页面,还有页面内容提取需要采用什么手段:比如css selector解析,x 阅读详情

 

面向对象的六大设计原则:

1.Single Responsiblility Principle 单一职责原则
There should never be more than one reason for a class to change

应该做到有且仅有一个原因引起类的变更。
接口尽量要单一
2.Open Closed Principle 开闭原则

Software entities like classes, modules and functions should be open for extension but closed for modifications.
主要是:对扩展开发,对修改关闭
注意事项:
  1)抽象约束
   由于接口或抽象是两个模块之间的一种契约,因此在接口或抽象类中,对扩展进行边界限定,不允许出现在接口或抽象类中不再的public方法;
参数类型,引用对象尽量使用接口或者抽象类,而不是实现类;抽象层尽量保持稳定。
  2)元数据(metadata)控制模块行为
  尽量采用配置文件来控制模块的行为
  3)封装变化
  将相同的变化封装到一个接口或抽象类中;将不同的变化封装到不同的接口或抽象类中。

3.Liskov Substitution Principle 里氏替换原则
Functions that use pointers or references to base classes must be able to use object of derived classed without knowing it.

主要是对OOP中,继承进行了约束:
所有引用基类的地方必须能够透明地使用其子类的对象
1.子类必须完全实现父类的方法,调用时,务必使用父类或接口
2.覆盖或实现父类的方法时,输入参数可以被放大,也就是说,子类的输入参数类型要宽于父类的类型覆盖范围
3.覆写或实现父类的方法时,输出结果可以被缩小

注意:子类拥有父类的所有属性和方法
4.Law of Demeter 迪米特法则

也称为最少知识原则 Least Knowledge Principle.
对类的低耦合提出了要求,要求类“羞涩”一点,尽量不要对外公布太多的public方法和非静态的public变量,尽量内敛,多使用
private,packag-private


5.Interface Segregation Principle 接口隔离原则
The dependency of one class to another one should depend on the smallest possible interface.

接口隔离原则:
1.接口要尽量的小 (优先满足单一职责)
2.尽量小的使用public方法。

接口分为实例接口Object Interface 和类接口 class interface


6.Dependence Inversion Principle 依赖倒置原则

High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not
depend upon details.Details should depend upon abstractions.

也就说:
1.高层模块不应该依赖于低层模块,两者都应该依赖其抽象。
2.抽象不应该依赖于细节
3.细节应该依赖于抽象

通过抽象可以使系统中的各个类或模块的实现彼此独立,不相互影响,实现模块间的松耦合。
但注意,JDK规定,使用clone方法时,必须使用实现类。

Java面向对象六大设计原则总结(超级详细,附有代码、图解以及案例) Java面向对象六大设计原则总结(超级详细,附有代码、图解以及案例)。分别为:开闭原则(OSP)、里氏代换原则(LSP)、依赖倒转原则(DIP)、接口隔离原则(ISP)、迪米特法则(DP)、合成复用原则(CRP)。 阅读详情

相关推荐

手把手教你用Cesium和RayMarching实现逼真体积云(附完整Shader代码)

本文详细介绍了如何利用Cesium和RayMarching技术实现逼真的体积云效果,包括环境准备、核心逻辑、云层建模和光照增强等关键步骤,并提供了完整的Shader代码。通过噪声函数选型、动态风场模拟和多重散射近似等技术,开发者可以在数字地球可视化项目中创建沉浸式天气效果,显著提升场景的真实感。

weixin_29230649的博客 415

爬虫程序设计规则

最近入门编写爬虫时想到的一点点---

akapythonADD的博客 570

最佳量化交易的计算机操作系统

本文在Creative Commons许可证下发布   我经常被问到的一个问题是:用哪种计算机操作系统和计算软件进行量化交易的理论研究和代码实现?   我想把这个问题简化,从挑选的计算软件和计算库来反推最佳使用的计算机操作系统。简而言之,就是在本文撰写的时候而言,如果你想进行基于任何严肃的数学理论和金融量化交易研究理论,这里特指机器学习或者深度学习。并且需要在本地研究机器上使用桌面版本,...

evilqliang的博客 2307

爬虫设计要点

  http://community.youkuaiyun.com/Expert/topic/5696/5696765.xml?temp=.7289392   1】 网络爬虫高度可配置性。 2】 网络爬虫可以解析抓到的网页里的链接 3】 网络爬虫有简单的存储配置 4】 网络爬虫拥有智能的根据网页更新分析功能 5】 网络爬虫的效率相当的高 那么依据特征,其实也就是要求了,如何设计爬虫呢?要注意哪些步骤呢? ...

lzj0470的专栏 377

知识图谱实战应用8-从文本关系抽取到知识图谱关系构建流程贯通

大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用8-从文本关系抽取到知识图谱关系构建流程贯通。我们从文本数据中采集到关键信息,并抽取出其中的关系信息,然后在存入图数据库中,整个过程实现自动化,我这里将举一个文本例子进行抽取。 对于知识图谱的构建是将实体、概念和它们之间的关系都以图表形式呈现出来的一种数据结构。要构建一个知识图谱,需要从不同的数据源中采集到相关信息,并将这些信息整合在一起,最终形成一个全面而且精确的知识图谱。

微学AI的博客 2545

Ardupilot chibios主函数学习(1)

目录 文章目录目录摘要第一部分chibios主函数**(1)主回调函数入口****(2)主回调函数入口****(3)主回调函数入口****(4)主回调函数入口**1.函数hal.scheduler->init()分析 摘要 本节主要记录自己学习Ardupilot的 chibios代码过程,欢迎批评指正。 第一部分chibios主函数 (1)主回调函数入口 AP_HAL_MAIN_...

陌城烟雨 4243

【架构】面向对象六大设计原则

面向对象六大设计原则是构建可维护、可扩展软件系统的关键指南。这些原则包括:单一职责原则(SRP)强调一个类只做一件事;开闭原则(OCP)提倡通过扩展而非修改来新增功能;里氏替换原则(LSP)确保子类能安全替换父类;依赖倒置原则(DIP)主张高层模块应依赖抽象;接口隔离原则(ISP)建议拆分臃肿接口为专注的小接口;迪米特法则(LoD)限制对象间的直接交互。遵循这些原则能有效降低代码耦合度,提高复用性和可维护性,是构建高质量软件架构的基础。每个原则都通过具体代码示例展示了违反和改进的方案,帮助开发者理解如何在实

2401_87853595的博客 1020

【异常】Warp终端AI功能403封禁报错I‘m sorry, I couldn‘t complete that request.Request failed with error: ErrorSta

本文针对Warp终端出现的AI功能定向封禁报错,完整还原脱敏后的报错信息、深度解读报错本质,并提供分优先级的全流程可落地解决方案,可直接用于技术排查、内部知识库归档。

奶爸的编程之路,也就一周冷个三天 266

面向对象六大设计原则详细讲解

面向对象的六大设计原则是编写高质量代码的重要指导思想,它们通过解耦、提高可扩展性和可维护性,使得系统在需求变动时具有更强的适应能力。在实际开发中,开发者应根据项目需求和具体情况灵活地运用这些原则,以确保代码的高质量和系统的长期可维护性。

net core ,前端 ,python 全栈开发 1245

高频电磁场仿真-主题064-伴随变量法与灵敏度分析

在电磁器件优化设计中,梯度信息对于指导优化方向至关重要。考虑一个典型的电磁优化问题: 其中 p=[p1,p2,...,pn]Tp = [p_1, p_2, ..., p_n]^Tp=[p1​,p2​,...,pn​]T 是设计参数向量(如几何尺寸、材料参数等)。传统有限差分法的困境:示例: 一个具有100个设计参数的天线优化问题伴随变量法(Adjoint Variable Method, AVM)通过引入伴随场,将梯度计算复杂度从 O(n)O(n)O(n) 降低到 O(1)O(1)O(1):伴随变量法在计算

kkchenjj的博客 411

【局部规划模块曲线算法】曲线平滑介绍

本文先对轨迹平滑问题做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容(1)适合给移动机器人运动的路径【满足运动学,高阶平滑】(2)高阶的运动学不能够突变的【至少三阶的加速度不能突变,最好四阶的jerk和五阶的snap也不能突变】(3)在转弯的地方不会停下来(4)加减速均衡,节省能量(5)节省时间的。

qq_35635374的博客 5715

面向对象六大设计原则(2.0详细版)

最后强调一下,在这六大原则中,开闭原则通常被认为是面向对象设计中最核心、最基础的原则之一,其他原则很多时候可以看作是实现它的具体手段或在不同层面的体现。同时设计原则不能只看不练,在学习了设计原则后可以回顾自己之前的项目思考是否符合六大原则、如何进行修改改善,并在以后的项目中尽量地践行六大原则。

2401_86909484的博客 947

路径规划 | 详解混合A*算法Hybrid A*(附ROS C++/Python/Matlab仿真)

Hybrid A*算法通过结合连续状态空间搜索、运动约束考虑和轨迹优化等技术,弥补了普通A*算法在高维连续空间和的不足,提高了路径规划的效率和鲁棒性,广泛应用于车规级路径规划。本文详细图解Hybrid A*算法的原理——启发式、维诺耗散项、节点扩展法则等,并给出ROS C++、python、matlab三种语言的仿真实现加深理解

FRIGIDWINTER的博客 1万+

面向对象六大设计原则

讲人话介绍了面向对象六大设计原则

m0_62201229的博客 107

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

面向对象设计模式——六大设计原则

面向对象六大设计原则 单一职责原则、依赖倒转原则、米特莱迪法则、依赖倒转原则、开闭原则、依赖倒转原则 单一职责 Single Responsibility Principle 一个类只有一个发生变化的原因 具体到函数的功能,类的功能,接口的功能 开闭原则 Open Closed Principle 一个软件实体,如类,模块和函数,应该对扩展开发,对修改关闭 里式替换原则 Liskov Substitution Principle 所引用基类的地方必须能透明的使用其子类的对象 米特莱迪法则 Law of De

qq_42766309的博客 213

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

python精选14集(面向对象-六大设计原则)

文章目录设计原则一、开-闭原则(目标、总的指导思想)二、类的单一职责(一个类的定义)三、依赖倒置(依赖抽象)四、组合复用原则(复用的最佳实践)五、里氏替换(继承后的重写,指导继承的设计)六、迪米特法则(类与类交互的原则)类与类的关系【区分】总结 设计原则 一、开-闭原则(目标、总的指导思想) Open Closed Principle “开”指的是允许一个类甚至往大了说允许一个系统随时可以对自己的功能进行扩展。 “闭”指的是不允许在扩展和修改功能的时候触及到已经写好的底层代码(比如父类)。 举一个比较浅显的

weixin_38640052的博客 1383

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

面向对象程序分析与设计六大设计原则

文章目录一、单一职责原则二、接口隔离原则三、依赖倒转原则四、迪米特法则五、里氏替换原则六、开闭原则 一、单一职责原则 一个类应该只有一个发生变化的原因。 单一职责原则适用于类、接口、方法。这个原则有什么用呢,它让类的职责更单一。这样的话,每个类只需要负责自己的那部分,类的复杂度就会降低。如果职责划分得很清楚,那么代码维护起来也更加容易。试想如果所有的功能都放在了一个类中,那么这个类就会变得非常臃肿,而且一旦出现bug,要在所有代码中去寻找;更改某一个地方,可能要改变整个代码的结构,想想都非常可怕。当然一

weixin_53514362的博客 783

从理论到实践:深入解析面向对象六大设计原则

本文深入解析面向对象六大设计原则,包括单一职责原则、里氏替换原则、依赖倒置原则等,通过实际案例展示如何应用这些原则提升代码质量。文章特别强调单一职责原则的重要性,帮助开发者创建更灵活、易维护的软件系统。

weixin_28730131的博客 424

面向对象之六大设计原则

面向对象之六大设计原则   六大设计原则 一、单一职责原则     1.定义:应该有且仅有一个原因引起类的变更。     2.单一职责的好处         a.类的复制性降低,实现什么职责都有清晰明确的定义         b.可读性提高,复杂性降低,那当然可读性提高了         c.可维护性的提高,可读性提高,当然更容易维护         d.变更引起的风险降低,本身变更是必不可少...

weixin_34293059的博客 80
上一篇: JAVA 中枚举类注意事项
下一篇: Dialog 顶部黑线问题
Superr爬爬虫
博客等级 码龄19年 72粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值