设计模式---设计原则

【Java】六大设计原则和23种设计模式 代理模式给某一个对象提供一个代理对象并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只是想买一辆车而已为什么我还要额外做这么多事呢?于是我就通过中介公司来买车,他们来给我找车源,帮我办理车辆过户流程,我只是负责选择自己喜欢的车,然后付钱就可以了。 阅读详情

设计模式概述

模式分类

设计原则

模式分类

设计模式一般分为三大类:

  • 创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
  • 结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
  • 行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
  • 除此划分方式外,也存在以其它不同角度的划分

设计原则

开闭原则(OCP)
  • Open For Extension Closed For Modification Principle,简称开闭原则。对扩展开放,对修改关闭,需要扩展时对已有功能代码进行扩展,不修改原有代码。
  • 开闭原则是面向对象的核心,是最基础、最重要的设计原则。
  • 开发过程中,应该把可能会频繁变动的部分抽象出来,当需要变动时,只需要去实现抽象即可,也就是面向抽象编程。
单一职责原则(SRP)
  • Single Responsibility Principle,单一职责原则,对类来说,类的职责应该是单一的,一个类只能对外提供一种功能,单一职责相当于降低了各种职责的耦合度。
  • 不要存在多于一个导致类变更的原因,每个类应该实现单一的职责,否则任一职责变化可能会影响类其它职责。
里氏替换原则(LSP)
  • Liskov Substitution Principle,里氏代换原则,任何地方出现的抽象类,都可以使用该抽象类的实现类来代替。
  • 类似于C++中类型兼容性原则,所有基类对象都可以用派生类对象代替。
  • LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
  • 派生类对基类的方法尽量不要重写和重载。因为基类是基本结构,通过规范接口与外界交互,派生类不应该随便破坏它。
依赖倒置原则(DIP)
  • Dependence Inversion Principle,依赖倒置原则。是开闭原则的基础,抽象不应该依赖于细节,细节应该依赖于抽象。
  • 依赖倒置原则是面向对象编程的标志,在具体软件设计时,上层模块不应该依赖于底层模块,底层模块更不应该依赖上层模块,而是上层模块和底层模块都向中间靠拢,共同依赖于二者中间的抽象接口层。整个软件程序设计的依赖关系应该终止于抽象接口层,上层和底层互不关心,甚至使用什么编程语言都不关心。
  • 抽象接口层提供一个标准或者协议,它对上提供访问的接口,对下提供实现的标准,抽象接口层本身不执行任何操作,具体的功能由它的实现去完成。
接口隔离原则(ISP)
  • Interface Segegation Principle,接口隔离原则。
  • 一个接口对外只提供一种功能,不同功能应该通过不同的接口提供,而不是把多种功能都封装到一个接口中。
迪米特法则(LOD)
  • Law of Demeter,迪米特法则,也叫做最少知道原则(The Least Knowledge Principle)。
  • 一个类对所依赖的类不需要知道太多信息,无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。这样当被依赖的类变化时,才能最小的影响该类。
合成复用原则(CARP)
  • Composite/Aggregate Reuse Principle,合成复用原则。优先使用对象组合而不是继承原则。
  • 使用继承的时候,基类变化可能会影响派生类,而使用组合/聚合可以降低这种依赖关系。
  • 组合/聚合降低了类与类之间的耦合性,一个类的变化对另一个类的影响相对较小,使用继承时,必须遵守里氏替换原则。

起始

HSmartWindowControl vs HWindowControl:Halcon老鸟教你如何根据项目需求选对控件(附性能对比) 本文深度对比Halcon图像处理中的HSmartWindowControl与HWindowControl控件,从性能、内存占用和交互体验等维度提供选型建议。HSmartWindowControl在硬件加速渲染、智能内存管理方面表现优异,特别适合医疗影像和工业检测等高性能需求场景,而HWindowControl则更适合兼容旧系统和资源受限环境。 阅读详情

相关推荐

RISC-V详细介绍

文章目录写在前面什么是RISC-VRISC-V诞生的背景ISA霸权摩尔定律的穷途末路穷困潦倒的学者不断增长的指令数量RISC-V架构设计思想如何设计一个好的ISARISC-V之RV32I四个典型特点RISC-V之乘除法指令指令格式用乘法代替常数除法RISC-V之RV64RISC-V的特权架构机器模式监管者模式 写在前面 本文主要基于RISC-V中文手册,其中包括但不限于一些网络的资料。本文版权属于skywf,转载或借用请联系作者。 什么是RISC-V RISC-V(发音为“risk-five”)是一个基于

skywf的博客 3万+

DesignPattern - 设计原则与设计模式初探

欢迎关注微信公众号:FSA全栈行动 ???? 一、设计原则 设计模式是站在设计原则的基础之上的,所以在学习设计模式之前,有必要了解一下设计原则 软件设计开发原则 为了让代码有更好的重用性,可读性,可靠性,可维护性 有六大原则,英文首字母拼在一起就是 SOLID(稳定的),所以也称之为 SOLID 原则 1、单一职责原则(Single Responsibility Principle) 一个类只负责一个功能领域中的相应职责,就一个类而言,应该只有一个引起它变化的原因 是实现 高内聚、低耦合 的指

GitLqr的博客 349

Mac本地大模型实战指南:Ollama+Metal+Apple Silicon深度优化

大语言模型(LLM)本地化部署正成为开发者关键技术能力,其核心在于推理效率、硬件适配与成本控制。Apple Silicon凭借统一内存架构(UMA)和Neural Engine,为本地LLM运行提供了独特优势;Metal加速则显著提升GPU计算吞吐,使Gemma 4、Qwen 3.5等模型在M系列Mac上实现低延迟、高精度、离线可用的工程落地。相比云端API,本地方案规避了token计费、网络依赖与数据外泄风险,特别适用于企业文档处理、实时语音分析、私有知识库检索等强隐私、低时延场景。本文聚焦Mac平台,系

weixin_33443333的博客 352

DesignPattern_Java:设计模式分类和设计原则

设计模式分类: 创建型: 单例模式(Singleton Pattern) 工厂方法模式(Factory Pattern) 抽象工厂模式(Abstract Factory) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 结构型: 代理模式(Proxy) 装饰模式(Decorator) 适配器模式(Adapter) 组合模式(Com

Anonymous 1811

RAG-Anything 实战:构建企业级多模态知识图谱问答系统

本文详细介绍了如何利用RAG-Anything构建企业级多模态知识图谱问答系统,解决跨模态文档处理的痛点。通过架构设计解析、部署实战指南和典型业务场景解决方案,帮助企业实现高效的知识管理和智能检索,提升决策效率。

weixin_29089057的博客 385

Jetson Orin NX深度学习环境配置全攻略:从JetPack到PyTorch避坑指南

本文提供Jetson Orin NX深度学习环境配置的完整避坑指南。重点讲解如何正确利用JetPack SDK作为系统基石,使用Miniforge管理Python环境,并安装与CUDA版本严格匹配的PyTorch特供版本。通过详细的步骤和验证方法,帮助开发者在ARM架构的嵌入式平台上高效搭建稳定的AI开发工作站。

yolo5detector的博客 272

设计模式与设计原则简介——及其设计模式学习方法

本文主要是关于【设计模式与设计原则的关系】以及【常见的六种面向对象设计原则】介绍说明

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1389

【保姆级教程】基于UNet++&MobileNetv2的语义分割模型从训练到RK3588部署:让边缘AI落地效率提升300%

通过SMP库一键构建encoder_name="mobilenet_v2", # 选择MobileNetv2作为骨干encoder_weights="imagenet", # 加载预训练权重加速收敛in_channels=3, # 输入图像通道数(RGB)classes=29, # Cityscapes数据集类别数activation=None # 输出无激活,便于后续损失计算本教程从“模型设计-训练-转换-边缘部署”全链路拆解了。

FJN110的博客 211

设计原则与设计模式

六大设计原则和 23 种设计模式构成了软件设计的核心知识体系。六大设计原则为我们提供了高层次的指导方针,帮助我们从宏观角度构建合理、可维护的软件架构。而 23 种设计模式则是具体的实践工具,针对不同的场景和问题,提供了经过验证的解决方案。在实际的软件开发过程中,我们需要根据具体的业务需求和场景,灵活运用这些原则和模式。它们不是孤立存在的,而是相互关联、相互补充的。例如,在使用单例模式确保系统中某些资源唯一的同时,可能会遵循单一职责原则,让单例类专注于一项核心功能;

ByteBlossom 1251

『MaxKB 2.x 开发环境搭建』在Windows下运行最新源码的完整步骤

本文将详细介绍如何在Windows系统中完成MaxKB最新版(2.x)开发环境的搭建,包括前端、后端以及数据库的配置,确保开发者能够顺利启动项目。

老陈聊架构 586

手把手教你学Simulink--电机电磁兼容与可靠性​场景示例:基于Simulink的电机轴电压与轴电流抑制仿真

本文带你完成了电机轴电压与轴电流抑制的Simulink仿真,实现了:✅ 揭示了共模电压 → 寄生电容 → 轴电压 → 轴承电蚀的完整链路✅ 搭建了含寄生参数的高频电机等效模型共模电压最小化PWM(源头抑制)dv/dt滤波器(路径阻断)轴接地(终端泄放) ✅ 通过仿真验证了轴电压从68 V降至<3 V的显著效果 ✅ 为高可靠性电机系统提供低成本、高效益的轴承保护方案。

MHD0815的博客 315

设计模式之六大设计原则

古人云: 有道无术,术可求.有术无道,止于术.而设计模式通常需要遵循一些设计原则,在设计原则的基础之上衍生出了各种各样的设计模式。设计原则是设计要求,设计模式是设计方案,使用设计模式的代码则是具体的实现。设计模式中主要有六大设计原则,简称为SOLID ,是由于各个原则的首字母简称合并的来(两个L算一个,solid 稳定的),六大设计原则分别如下:​1、单一职责原则(Single Responsibitity Principle)​2、开放封闭原则(Open Close Principle)​。

在青海看海的企鹅的博客 2923

vue3:最新实现腾讯人脸核身+增强版人脸核身使用方法及示例源码,Vue3如何使用腾讯云慧眼人脸核身,提供人脸核身案例、身份信息核验、活体检测与核身比对等示例代码(后端spring与thinkphp)

vue3接入腾讯人脸核身,腾讯云人脸核身Vue3+后端代码,H5人脸核身,vue3 H5如何使用腾讯人脸核身sdk,vue3+thinkphp腾讯人脸核身,Spring Boot接入腾讯云人脸核身教程,hinkphp腾讯人脸核身,vue3人脸核身插件接入流程,vue+spring boot实现腾讯人脸核身,vue3接入腾讯云【增强版人脸核身接入】,vue3 h5微信公众号网页腾讯云慧眼人脸核身,tvue3接入人脸核身SDK,vue3+typescrip+vite接入慧眼实名认证,vue3腾讯云活体人脸核身(

✅ 精选推荐文章 4119

设计模式(Design Pattern , DP)的六大设计原则

设计模式(Design Pattern ,DP) 设计模式的背景 经过这段时间的学习,了解到了“设计模式”这个词,“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 直到1990年,软件工程界才开始研讨设计模式的话题。 1995年,“四人组”(Gang of Four,GoF)合作出版了《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书,在书籍中收录了23个设计模

weixin_43515837的博客 1595

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【设计模式】6大设计原则和23种设计模式

它们解决的问题是:如何组合类和对象来构建更复杂的、系统化的结构,同时保持系统的可扩展性和模块化。它们解决的问题通常是:如何以更优雅、灵活的方式创建对象,同时避免直接使用new关键字的硬编码。它们解决的问题是:在运行时,让对象之间的通信变得灵活、解耦,并使代码具有更清晰的逻辑。它们通过对对象创建过程的抽象,减少代码中的耦合性,使创建对象的过程更灵活和可控。它们处理的是如何优雅地组织类和对象之间的关系,以形成更大的、灵活的结构。根据项目需求,选择正确的设计模式来贯彻相应的设计原则,从而提升代码的。

藓类少女的博客 1422

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

设计模式-设计原则

设计模式的设计原则SOLID ,设计原则的思想为了帮助开发人员建立 高内聚、低耦合、可复用、可扩展、易维护的思想

weixin_37813118的博客 2190

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java 设计原则及24种设计模式

1. 职责单一原则2. 里氏替换原则3. 依赖倒置原则4. 接口隔离原则5. 迪米特法则6. 开闭原则。

jiruifeng_1的博客 326

java—01 设计模式&设计原则(I)

研发 --> 架构 (定义、例子,框架或接口中用过相关的开发)Single Reposibility Principle定义:一个类或者模块/服务/架构只负责完成一个职责。电商拆分成订单、库存、物流、支付。LSP:Liskov Substitution Principle定义:多用组合,少用继承。(在自己的类里引用其他的类(new一个类))含义:(1)里氏替换原则是针对继承而言的,如果继承是为了实现代码重用,也就是为了共享方法,那么共享的父类方法就应该保持不变,不能被子类重新定义。子类只能通过新添加方法来

QiAn的博客 1504

设计模式之设计原则

设计模式之设计原则 本文部分节选和引用自 如何学好设计,做好架构? 核心思想才是关键 感谢作者提供的高质量文章 1.单一设计原则 单一设计原则很好理解,指一个函数或者一个类再或者一个模块,职责越单一复用性就越强,同时能够降低耦合性。 案例:获取本地用户信息,提交到网络 fun post() { //创建数据库访问对象DAO val userDao = ... //从本地获取数据 val name = userDao.getName() val age

E的博客 229

设计原则和设计模式

提供一个创建产品族的接口,而不需要明确指定要创建的具体类, 其每个子类可以生产一系列相关的产品。

m0_64643342的博客 1962

如何使用设计原则指导设计模式

设计原则本身并不直接控制流程,而是通过来间接指导流程控制。不同的设计原则会引导开发者将控制权分配给不同的角色(类、对象或模块)。

weixin_47208845的博客 896

常用设计原则和设计模式

文章目录常用设计原则和设计模式常用的设计原则(记住)软件开发的流程常用的设计原则常用的设计模式基本概念基本分类设计模式详解(重点)单例设计模式普通工厂模式基本概念类图结构代码实现举例普通工厂模式的优势主要缺点多个工厂方法模式基本概念类图结构代码实现举例主要缺点静态工厂方法模式基本概念类图结构实际意义(工厂方法模式的作用)主要缺点抽象工厂模式基本概念类图结构代码实现举例主要优势装饰器模式基本概念类图结构代码实现举例实际意义代理模式基本概念类图结构代码实现举例实际意义代理模式和装饰器模式的比较模板方法模式基本概

hyment的博客 260

设计原则,设计模式初探

他把图片和视频在很多函数中是统一处理的,直接强转成视频的结构体,因为前面一部分重要的信息是相同的,直接用就可以了,同时他函数的复用率是比较高的,这点是拿易读和结构做了一定的牺牲。我把他分开了,让一个函数尽量干他命名的事情,也方便后面维护。对于一个把数据写进硬盘的操作函数来说,如果现在新加进来一种结构,比如原来是视频,图片,现在加进来ai便签了,你需要改这个写操作的函数为了支持他,而视频和图片用不上这新加进来代码,那这个接口隔离就做的不够好了,可以再细化一层,让最后的写操作不会受到新加进来的数据结构的影响。

嵌入式鼠鼠的博客 943

设计原则及设计模式(上)

在本文中,我们将首先探讨一些重要的设计原则,并通过具体的例子来说明这些原则的实际应用。随后,我们将介绍几种常用的设计模式,并分析它们是如何帮助我们解决特定的设计难题的。本篇为系列文章的第一部分,将重点介绍设计原则。

weixin_40134007的博客 815

设计模式之设计原则及分类

面向对象设计原则和前人总结出来的设计模式是软件工程中非常重要的概念思想,主要为我们日常的开发中提供了一套完整的开发思想,帮助我们在日常开发中构建更加灵活、可维护和可扩展的系统。设计原则是“道”:提供指导思想,塑造代码哲学。设计模式是“术”:提供具体工具,解决特定问题。二者结合能写出高内聚、低耦合、易扩展的代码。

weixin_43582896的博客 1260
上一篇: 基于c++11同步队列
下一篇: 模板方法模式(Template Method)
无夜_
博客等级 码龄7年 2916粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值