设计模式——面向对象的7大设计原则
1.单一职责原则
一个类中最好只放一种类型的方法,比如Dao中只有和数据库交互相关的代码。实现高内聚,低耦合。
2.开闭原则
对外拓展开放,对内修改关闭,有新的需求时不要修改已有代码,而是添加新的代码,比如设计出抽象类。
3.里氏替换原则
因为继承是侵入式的,子类最好不要重写方法去改变父类原有的功能,从而约束继承泛滥,提高代码健壮性。
4.依赖倒置原则
针对接口编程,注重多去实现接口来扩展功能。
5.接口隔离原则
接口细化,建立单一接口,不要设计出庞大臃肿的接口。
6.合成复用原则
尽量使用对象组合,而不是利用继承来达到复用的目的,比如A类只需要使用B类的一个小小的功能,最好在A类中创建B类的成员变量或参数,而不是A类继承B类。
7.迪米特原则
一个类应该尽可能少的与其他的类发生联系,比如A为客户,B为售楼处,C为楼盘。A最好不要与C发生过多的联系,因为与B联系会更方便简洁。
相关文章:
设计模式——面向对象的7大设计原则
1.单一职责原则 一个类中最好只放一种类型的方法,比如Dao中只有和数据库交互相关的代码。实现高内聚,低耦合。 2.开闭原则 对外拓展开放,对内修改关闭,有新的需求时不要修改已有代码,而是添加新的代码,比…...
智慧防汛,数字科技的力量
随着夏日的脚步临近,台风季节即将降临。对于那些居住在沿海地区的人们来说,台风是一种常见的自然灾害,其带来的风雨可能对生命和财产造成严重威胁。然而,随着数字科技的飞速发展,可视化技术为防汛抗台工作带来了全新的…...
“中国软件杯”飞桨赛道晋级决赛现场名单公布
“中国软件杯”大学生软件设计大赛是由国家工业和信息化部、教育部、江苏省人民政府共同主办,是全国软件行业规格最高、最具影响力的国家级一类赛事,为《全国普通高校竞赛排行榜》榜单内赛事。今年,组委会联合百度飞桨共同设立了“智能系统设…...
JDBC处理批量数据提高效率
文章目录 0 说明1 如何使用jdbc操作数据库1.1 加载数据库驱动1.2 建立数据库连接1.3 创建Statement或者PreparedStatement用来执行SQL1.4 开始执行SQL语句1.5 处理结果集1.6 关闭连接1.7 完整代码 2 批量操作数据库3 如何打印SQL语句4 jdbc常用开源类库 1 JDBC实现往MySQL插入百…...
使用css和js给按钮添加微交互的几种方式
使用css和js给按钮添加微交互的几种方式 在现实世界中,当我们轻弹或按下某些东西时,它们会发出咔嗒声,例如电灯开关。有些东西会亮起或发出蜂鸣声,这些响应都是“微交互”,让我们知道我们何时成功完成了某件事。在本文…...
react面试之context的value变化时,内部所有子组件是否变化
上测试代码 // context const state {a: 1,b: 1, } const context createContext(state);export default context; // A组件 const A () > {const { a } useContext(context);return (<div>{a}</div>) } export default A;// B组件 const B () > {cons…...
使用okHttp不走代理问题
背景 某日使用okhttp设置代理并发送爬虫请求时,发现部分url请求没有走代理直接和目标url建立了连接,伪代码如下。初始化okhttpClient时设置了proxySelecter代理,但是调用okhttpClient.newCall请求时并没用调用proxySelecter.select函数获取代…...
python moviepy 自动化音视频处理实践
MoviePy是一个用于视频编辑的Python库。它提供了一种简单且直观的方式来处理视频文件,包括剪辑、合并、裁剪、添加文本、添加音频等操作。使用MoviePy,你可以通过编写Python代码来创建和编辑视频,而无需使用复杂的视频编辑软件。 MoviePy建立…...
聊聊混合动力汽车和纯电骑车的优势和劣势
混合动力汽车和纯电动骑车是两种不同的交通工具,它们都有各自的优势和劣势。本文将分别探讨混合动力汽车和纯电动骑车的优势和劣势,并为文章提供三个备选的好听的标题。 混合动力汽车是一种结合了内燃机和电动机的汽车,它可以同时利用燃油和电…...
算法训练Day39|62.不同路径 ● 63. 不同路径 II
LeetCode:62.不同路径 62. 不同路径 - 力扣(LeetCode) 1.思路 想象成矩阵填格子,两个关键点,初始化和递推公式。 初始化除点(0,0)第一行第一列均为1,递推公式推导dp[i][j] dp[i …...
react中hooks分享
一. HOOKS是什么 在计算机程序设计中,钩子一词涵盖了一系列技术,这些技术用来通过拦截函数调用、消息或在软件组件之间传递的事件来改变或增加操作系统、应用程序或其他软件组件的行为。处理这些被截获的函数调用、事件或消息的代码称为“hook”。 在r…...
LeetCode1207. 独一无二的出现次数
题干 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。 示例1: 输入:arr [1,2,2,1,1,3] 输出:true 解释:在该…...
【maven】构建项目前clean和不clean的区别
其实很简单,但是百度搜了一下,还是没人能简单说明白。 搬用之前做C项目时总结结论: 所以自己在IDE里一遍遍测试程序能否跑通的时候,不需要clean,因为反正还要改嘛。 但是这个项目测试好了,你要打成jar包给…...
Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer
本篇文章聊聊 Stable Diffusion WebUI 中的核心组件,强壮的人脸图像面部画面修复模型 CodeFormer 相关的事情。 写在前面 在 Stable Diffusion WebUI 项目中,源码 modules 目录中,有一个有趣的目录叫做 CodeFormer,它就是本文的…...
从零开始理解Linux中断架构(24)软中断核心函数__do_softirq
1)概要 __do_softirq函数处理是总是尽可能的执行所有未决软中断。 (1)关闭软中断:在preempt_count设置软中断标志:SOFTIRQ_OFFSET 让in_interrupt检查条件为真,进入软中断处理临界区,后面进来的处理请求,需要检查in_interrupt(),从而达到禁止本cpu上的软中断嵌套的目…...
【云原生】Kubernetes中deployment是什么?
目录 Deployments 更新 Deployment 回滚 Deployment 缩放 Deployment Deployment 状态 清理策略 金丝雀部署 编写 Deployment 规约 Deployments 一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。 你负责描述 Deployment 中的 目标状态,而 De…...
sk_buff操作函数学习
一. 前言 内核提供了大量实用的操作sk_buff的函数,在开发网络设备驱动程序和修改网络协议栈代码时需要用到。这些函数从功能上可以分为三类:创建,释放和复制socket buffer;操作sk_buff结构中的参数和指针;管理socket b…...
conda create时候出现JSONDecoderError解决方法
起因是我的conda出现了JSONDecoderError,这个我搜了一下是因为某些配置文件错误,所以让我update conda,于是我先用了下面的指令: conda update conda 但是在执行过程中依然会出现 JSONDecoderError的问题,后来参考了这…...
Electron 工具进程utilityProcess 使用中遇到的坑点汇集
简介 这是基于 node.js 中的子进程的概念推出来的,可参考链接:utilityProcess | Electron 官网有一句话非常重要,它提供一个相当于 Node.js 的 child_process.fork API,但使用 Chromium 的 Services API 代替来执行子进程。这句话…...
JdbcTemplate
目录 1、简介 2、开发步骤 2.1、导入坐标 2.2、创建表和类 2.3、创建JdbcTemplate对象 2.4、执行数据库操作 3、解耦 4、增删改查 ⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹…...
如何用Sunshine打造个人专属的游戏云服务:从零开始搭建高性能串流服务器
如何用Sunshine打造个人专属的游戏云服务:从零开始搭建高性能串流服务器 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 厌倦了被高性能游戏主机束缚在固定位置&#x…...
Mem Reduct终极指南:如何用免费工具轻松解决Windows内存卡顿问题
Mem Reduct终极指南:如何用免费工具轻松解决Windows内存卡顿问题 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memredu…...
Wan2.2-I2V-A14B在Qt桌面程序中的应用:开发本地化视频创作工具
Wan2.2-I2V-A14B在Qt桌面程序中的应用:开发本地化视频创作工具 1. 引言:让AI视频生成触手可及 想象一下,一个普通用户无需学习复杂的命令行,只需拖拽图片、滑动几个调节条,就能轻松将静态图片变成生动的视频。这正是…...
Flutter相机开发避坑指南:CameraPreview全屏适配的正确姿势
Flutter相机开发避坑指南:CameraPreview全屏适配的正确姿势 第一次在Flutter中集成相机功能时,我信心满满地给CameraPreview设置了屏幕宽高,结果看到的画面像被强行拉长的橡皮筋——人脸变成了马脸,圆形变成了椭圆。这种新手必踩的…...
GHelper:重新定义华硕设备的硬件控制体验
GHelper:重新定义华硕设备的硬件控制体验 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, and othe…...
ESP32开发板选型指南:从Arduino到NodeMCU,哪款更适合你的项目?
ESP32开发板选型指南:从Arduino到NodeMCU,哪款更适合你的项目? 在物联网和嵌入式开发领域,ESP32系列开发板凭借其出色的性价比和丰富的功能,已经成为众多开发者的首选。面对市场上琳琅满目的ESP32开发板型号࿰…...
uosc:革命性MPV播放器UI,基于接近度智能显示界面元素
uosc:革命性MPV播放器UI,基于接近度智能显示界面元素 【免费下载链接】uosc Feature-rich minimalist proximity-based UI for MPV player. 项目地址: https://gitcode.com/gh_mirrors/uo/uosc uosc是一款为MPV播放器打造的功能丰富且极简的基于接…...
d2s-editor:让暗黑破坏神2存档修改变得简单安全
d2s-editor:让暗黑破坏神2存档修改变得简单安全 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 对于暗黑破坏神2玩家而言,修改存档往往是一把双刃剑——既想个性化角色体验,又担心损坏文件或失…...
如何高效下载八大网盘文件:完全免费的直链获取解决方案
如何高效下载八大网盘文件:完全免费的直链获取解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...
AutoGLM-Phone-9B环境搭建教程:双显卡配置详解,轻松启动模型服务
AutoGLM-Phone-9B环境搭建教程:双显卡配置详解,轻松启动模型服务 1. 环境准备与硬件要求 1.1 硬件配置要求 AutoGLM-Phone-9B作为一款多模态大语言模型,对硬件配置有特定要求: 显卡配置:至少需要2块NVIDIA RTX 409…...
