设计模式-总体概括篇

设计模式学习摘要(PDF) 设计模式学习摘要。 网络上找到的资源,共享一下。 立即下载

序:

     什么是设计模式?

     设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。

     用生活推敲出这个概念:淘宝的经营模式,京东的经营模式。两者基本上可以代表了目前电商所有的经营模式。其它的经营模式也是在这两者的模式上面做了改进。为什么它们会成为模板呢?简单的来说:他们赚钱多,效益好,效率高。大家都以他们为基准取长补短。

     为什么使用设计模式?

      为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构(通常我们看到盖楼,是先下框架,在灌水泥。设计模式就好像下的框架一样。下好框架可能会让后续装饰的成本更低,并且更加牢固。但是如果框架搭建的不好,可能导致事倍功半)一样。

1.常见的设计模式

java人员一谈到设计模式,可能就会浮现出23这个数字。

下面是对于23中设计模式的一个概述清单:

创建型模式,共五种:

工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:

适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:

策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

两类特殊的模式:

并发型模式和线程池模式。

2.设计模式六大原则

        根据设计模式的6大基本原则也做了一个demo,git地址:https://github.com/startYao/25-years-old-effort-basics-demo-01.git

      a、单一职责原则

         什么是单一职责,用通俗一点的例子来描述就是 做好自己的事,少管闲事 。

         每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。也就是高内聚。描述的意思是每个类都只负责单一的功能,切不可太多,并且一个类应当尽量的把一个功能做到极致。

      b、里氏替换原则(LSP)

 一个子类应该可以替换掉父类并且可以正常工作。

 子类一般不该重写父类的方法,父类的方法一般都是对外公布的接口,有不可变性的,不该变化的东西给修改掉。

 总之:父类可以出现的地方,一定可以用它的子类替换掉。

 怎么样做,才能符合LSP呢? 尽量不要从可实例化的父类中继承,而是要使用基于抽象类和接口的继承。

 c、开闭原则

         修改关闭,扩展开放

 软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的。

 d、依赖倒置原则

         针对接口编程,不针对实现编程。

  依赖倒置原则的好处很明显,当需求变更的时候,我们可以很灵活的进行扩展,而不用破坏开闭原则。

 e、迪米特原则

        最小知道原则,一个类应该尽量不要知道其他类太多的东西,不要和陌生的类有太多接触。

 f、接口隔离原则

         接口最小化原则

         比如设计一个手机接口时,手机哪些行为是必须的,接口尽量的小

         比如说,手机和智能机。可以手机一个接口,智能机一个接口。并不是所有的手机都满足智能机

 

 

 

 

 

 

【RK3588开发记录】超详细的RK3588修改debug串口波特率为115200 修改RK3588的debug串口为115200 阅读详情

相关推荐

一个响应ping包延迟偏大的问题

前段时间客户反馈一个使用pc上的命令行ping无线设备(WiFi4)时,设备平均响应时间(测试时长2小时,1秒Ping一次)相比其它机型偏慢的问题,并上传上具体的时间的Log.从log中看到,大多数包的响应还是比较快的,只是个别响应时间较长,且响应时间长的包时间几乎都是一样的100多ms.如下是部分响应时间截图. 整个2小时的测试时间里,总是时不时的出这么上102,104ms的响应时间,这直接导致了平均响应时间被拉大.于是本地测试,也发现了类似的延迟.本地测试时,现象略有...

流风回雪的博客 1万+

浅谈Java设计模式——总体概要(GeneralOverview——Table Of Contents)

一、什么是设计模式            设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,...

IdealSpring的博客 444

GPU算力租用平台推荐

阿里云作为中国领先的云计算服务提供商,提供了丰富的GPU云服务器实例,包括NVIDIA Tesla V100、A100等多种高性能GPU型号。阿里云GPU云服务器适用于深度学习、科学计算、图形渲染等多种场景,能够满足不同用户的计算需求。

hong161688的博客 8178

设计模式概览总结

应用设计模式的终极目标:管理变化,提高复用 设计模式实现的两种手段:分解,抽象 设计模式的八大原则:面向对象设计八大原则 代码重构技巧/技术: 静态->动态 早绑定->晚绑定(见template method模式) 继承->组合 编译时依赖->运行时依赖 运行时装配->编译时装配(Generic Programming) 紧耦合->松耦合 从封装变化角度对GOF的23种设计模式进行分类: 设计模式之“组件协作“模式:Template Method、Strat

To the beyond and infinity! 245

手把手教你使用 YOLOv11/v8 算法 + PaddleOCR 算法完成车牌检测和车牌识别系统,AI智能体,毛玻璃系统,包括PaddlePaddle安装、数据集预处理、模型训练、AI大模型应用等

手把手教你使用 YOLOv11/v8算法 + PaddleOCR算法完成车牌检测和车牌识别系统,AI智能体,毛玻璃系统,包括PaddlePaddle安装、数据集预处理、模型训练、AI大模型应用等。车牌识别系统支持 蓝牌、绿牌、黄牌、双层车牌等车牌识别。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2788

手把手教您同花顺如何设置大盘分时均价线

本文将手把手教你如何在同花顺PC端开启大盘指数分时图📈

XiaoqiangClub的博客 4430

设计模式概括认知

网络真的很强大,重新回头看这些东西,发现不再那么晦涩难懂,这里做简单整理。 总体来说设计模式分为三大类: 创建型模式, 共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 工厂模式(Factory Pattern): 定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 抽象工厂模式(Abstract Factory Pattern): 围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。 单例模式(Singleton Patt

yun6853992的博客 137

光学传播仿真软件:SPEOS_(14).建筑物内光环境仿真

在建筑物内光环境仿真中,材料属性的定义直接影响光的传播和反射效果。SPEOS提供了丰富的材料库,但也可以自定义材料属性以满足特定需求。创建新材料选择Materials->。输入材料名称和类型。配置材料属性选择材料对象,打开属性编辑器。设置反射率、透射率、表面粗糙度和颜色。# 导入SPEOS模块# 创建新材料# 配置材料属性custom_material.set_reflectivity(0.8) # 设置反射率为0.8。

kkchenjj的博客 1251

【设计模式】【总】设计模式分类与原则概括

简要设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。总体来说设计模式分为三大类:分类创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模...

the_fool_的博客 828

ROCm rocr-libhsakmt分析系列1-2:多GPU跨卡VRAM访问机制分析

本文基于ROCr-Runtime的libhsakmt库源码,深入分析了多GPU系统中跨设备内存访问的实现机制。主要内容包括: 实现流程概述:通过P2P拓扑发现、统一虚拟地址空间、页表映射和硬件转发四个步骤,实现零拷贝的跨GPU内存访问。

图形/计算GPU的驱动与虚拟化技术分享园地 2509

orangepi香橙派用户名及密码修改和VNC远程登陆

1、修改 /etc/passwd用户信息文件 vim /etc/passwd #admin❌503:501::/home/admin:/bin/bash #把用户名admin改成rest #test❌503:501::/home/test:/bin/bash 2、修改 /etc/shadow用户密码文件 vim /etc/shadow #admin:Dnakfw28zf38w:8764:0:168:7::: #由于密码加密方式存放,只修改用户名即可(密码不变) #test:Dnakfw28zf38w:876

weixin_40227845的博客 5663

常用设计模式总结

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,是可复用面向对象软件的基础。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中...

yjclsx的博客 43万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java中常用的设计模式

文章转载借鉴:http://blog.youkuaiyun.com/zhangerqing 一、什么是设计模式 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块...

Superme 13万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

设计模式的总体介绍

Java设计模式概述         设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 一、设计模式的分类 总体来说设计模式分为三大类(23种): 创建型模式,共五种: 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种: 适...

evior 211

WINCC7.3破解文件

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

java设计模式--总体概要

前段时间由于工作上的调动,不再带团队负责定制局点的开发工作,转到部门的Core模块开发项目组,负责部门核心代码的开发。由于之前负责的是定制局点,直接面向客户的特殊需求,同时需求也来的比较紧急,所以都没有过多考虑代码设计上的东西。接手现在的工作后,发现部门首席架构师写的代码真的非常精妙,对各种设计模式的使用也是用的恰到好处,整个框架的扩展性非常的强,让我意识到深入学习设计模式的重要性,所以仅以此篇博

JordanInShenzhen的博客 867

2022-10-Java 设计模式概括和设计原则

一.设计模式定义(Design Patterns) 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的...

zzhangwa的博客 128

设计模式:设计模式之概括

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。 From Baidu 百科设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂

BAOLIANG196的博客 703

Java的23中设计模式之概念篇(一)

一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两...

Aboutdream的博客 263

设计模式回顾

设计模式本人比较倾向于敏捷开发的时候最好用(大神请忽略),总体设计比较倾向于自顶向下的设计。 设计模式主要是根据设计原则在不同场景的使用经验的出来的,我们站在巨人的肩膀上来看看吧。 http://c.biancheng.net/design_pattern/ 本人面试问的最多的是:什么是面向对象,讲讲你的理解?往往很少人能说好,只能说面向对象有三大特征:封装、继承、多态。背过无数次深入...

u014733604的博客 265

设计模式整体总结

一什么是设计模式 想知道设计模式首先就要知道什么是模式。 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的成功的解决方案,无须再重复相同的工作。这个定义可以简单地用一句话表示: 模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。【A pattern is a successful or eff

小树不倒我不倒 870

设计模式的三大分类及六大原则

一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两...

烁干的博客 2万+

设计模式总结篇 - 设计模式整体规划

设计模式  设计模式是软件开发人员在软件开发过程之中面临的一般问题的解决方案,这些解决方案是众多软件开发人员经过相当长的一段时间的实验和错误总结出来的。设计模式是一套被反复使用,多数人知晓的、经过分类编目的,代码设计经验的总结。使用设计模式是为了重用代码,让代码更容易被他人理解,保证代码可靠性。 设计模式总共有23 中, 分为 创建型模式, 结构型模式, 行为型模式。 设计到Java

奔跑的Q 493

Atitit 设计模式之道 艾提拉著 sbb 目录 1. 一、设计模式的分类 1 1.1. 总体来说设计模式分为三大类: 1 1.2. 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建

Atitit  设计模式之道 艾提拉著 sbb   目录 1. 一、设计模式的分类 1 1.1. 总体来说设计模式分为三大类: 1 1.2. 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 1 1.3. 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 1 1.4. 行为型模式,共十一种:策略模式、模板方...

attilax的专栏 478

浅谈Java设计模式

前言:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对

比较喜欢、笑的博客专栏 2939

设计模式介绍

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。六大原则开闭原则(开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。里氏代换原则(里氏代换原则面向对象设计的基本原则之一。

庸不易的博客 874

Java[从菜鸟到高手演变]之设计模式 一

很简单,一个原型类,只需要实现Cloneable接口,覆写clone方法,此处clone方法可以改成任意的名称,因为Cloneable接口是个空接口,你可以任意定义实现类的方法名,如cloneA或者cloneB,因为此处的重点是super.clone()这句话,super.clone()调用的是Object的clone()方法,而在Object类中,clone()是native的,具体怎么实现,我会在另一篇文章中,关于解读Java中本地方法的调用,此处不再深究。本小结会通过对象的复制,进行讲解。

u014112513的博客 1917
上一篇: 时间复杂度和空间复杂度
Problem-boy
博客等级 码龄10年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值