Java设计模式(五)

news/2024/11/24 9:56:06/

系列文章目录

设计模式概述和分类


文章目录

  • 系列文章目录
  • 前言
  • 一、掌握设计模式的层次
  • 二、设计模式介绍
  • 三、设计模式类型
    • 1.设计模式的三种类型
    • 2.设计模式概述
  • 总结


前言

大家好呀,欢迎来到柚子的博客~让我们一起成长吧o( ̄▽ ̄)ブ


提示:以下是本篇文章正文内容,下面案例可供参考

一、掌握设计模式的层次

(1)第1层:刚开始学编程不久,听说过什么是设计模式。
(2)第2层:有很长时间的编程经验,自己写了很多代码,其中用到了设计模式,但是自己却不知道。
(3)第3层:学习过了设计模式,发现自己已经在使用了,并且发现了一些新的设计模式挺好用的。
(4)第4层:阅读了很多别人写的源码和框架,在其中看到别人设计模式,并且能够领会设计模式的精妙和带来的好处
(5)第5层:代码写着写着,自己都没有意识到使用了设计模式,并且熟练的写了出来。

注:设计模式不是在功能层面思考问题的,而是在软件系统和软件结构层面思考的。

二、设计模式介绍

(1)设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案,设计模式(Design pattern)代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
(2)设计模式的本质提高软件的维护性,通用性和扩展性,并降低软件的复杂度。
(3)<<设计模式>>是经典的书,作者是Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides Design(俗称" 四人组 GOF ")。
(4)设计模式并不局限于某种语言,java,php,c++ 都有设计模式。

三、设计模式类型

1.设计模式的三种类型

设计模式分为三种类型,共23种
(1)创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式
(2)结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
(3)行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)。

注:不同的书籍上对分类和名称略有差别。

2.设计模式概述

(1)抽象工厂模式和工厂模式都是属于工厂模式
(2)单例模式就是解决我怎么让一个系统里面只能有某个类的实例只能有一个。
(3)原型模式是解决的我们去怎么克隆一个对象,深拷贝还是浅拷贝。
(4)结构性模式是站在软件结构的角度来思考的。
(5)装饰者模式能解决类爆炸的问题。
(6)行为型模式是站在方法的角度来思考设计的。
(7)模板方法模式是说:我怎么设计这个方法让你更合理,比如有A类是抽象类,B类C类D类继承A类,BCD都会执行一个方法,比如要看一段代码执行的时间,那可以把执行的模板提到A里面去执行,让B,C来继承,B和C用这个模板把自己实际的代码再实现,这就是行为型模式要解决的。站在方法的角度,让方法的调用更合理,方法的设计更合理的角度来进行这个设计的。
(8)职责链模式(责任链模式)就是我们方法是形成一个链状的,这个调完了就调下一个。

注:详解请看后续文章~


总结

设计模式代表了最佳实践。那么屏幕前的小伙伴,你掌握的程度属于哪一层呢?欢迎评论哦~


╭◜◝ ͡ ◜◝╮
( ˃̶͈◡˂ ̶͈ )感觉有用的话,欢迎点赞评论呀!
╰◟◞ ͜ ◟◞╯


http://www.ppmy.cn/news/283602.html

相关文章

HDU 6230

题意&#xff1a;字符串S【1,3n-2】 中以 位置n&#xff08;C1&#xff09;和2n-1&#xff08;C2&#xff09;为回文串中心&#xff0c;长度都为n&#xff0c;找出给出的主串中有多少这样的子串 分析&#xff1a;首先用manacher求出以每个点为中心的回文串半径&#xff0c;考虑…

ESXi服务器CPU睿频检测

ESXi的VM中显示主机频率是恒定的&#xff0c;因此无法知道实际CPU是否睿频。通过查阅相关资料得出可以使用esxtop命令查看CPU实际频率。 以下是操作步骤 1.启动ESXi ssh服务。 2.使用ssh工具连接主机 3.执行esxtop 4.依次按p,f,f,回车 5.使用A/MPERF列数据*cpu基础频率得到的就…

HDU 6230 (ManacherBIT)

HDU 6230 (Manacher&BIT) 依据题意可知&#xff0c;我们需要找到满足两个相交的回文串。 分为几个步骤&#xff1a; 1.求出每个位置的最大回文半径。 2.判断每个位置的贡献。 3.求和. 我们从小到大枚举位置 i i i&#xff1a; 对于 i i i需要满足的 j j j的条件有&a…

A30、V100性能测试对比报告

一&#xff0c;基础配置对比 卡型架构卡数显存CUDAGPU Driver(TDP)能源消耗CPU核数(超线程)内存大小CPU型号发布日期备注A30Ampere824G11.0450.51.06165 Watt48252AMD EPYC 7402 24-Core Processor2021PCIeV100Volta832G11.4470.57.02250 Watt80503Intel Xeon Gold 6230 CPU …

MT7621_基础篇(1) 芯片资料了解 一

项目开发需要使用MT7621&#xff0c;负责驱动移植&#xff0c;适配公司板卡。网上相关资料多为涉及openwrt的&#xff0c;不太符合我们裁剪要求&#xff0c;故记录此流程&#xff0c;进行深入学习研究。首先先对芯片资源做一个了解。后续计划包括uboot移植分析&#xff0c;kern…

6230的GPRS上网设置

上GPRS只要设置正确&#xff0c;应该不存在软件的问题吧&#xff01;功能表-服务-设置-连接设置-当前服务设置-选个空位-修改服务设置-设置组名称-“移动梦网GPRS”-主页-“http://wap.monternet.com”-代理-启动-主要代理-“10.0.0.172”-“80”-次要代理-空白-“8080”-传输方…

如何使用ebpf统计某个端口的流量

前言 上篇文章我们已经初步使用kprobe来探测内核函数了, 这篇文章就在上篇文章的基础上做个修改, 通过kprobe探测内核函数tcp_sendmsg来统计tcp服务端的发送流量. 废话不多说, 直接上正文. 环境 tcp服务端运行在ubuntu22, 监听端口为6230, 其内核为5.19.0-26-generic, ebpf程序…

【周赛318 LeetCode 6230】长度为 K 子数组中的最大和

题目描述 给你一个整数数组 nums 和一个整数 k 。请你从 nums 中满足下述条件的全部子数组中找出最大子数组和&#xff1a; 子数组的长度是 k&#xff0c;且子数组中的所有元素 各不相同 。返回满足题面要求的最大子数组和。如果不存在子数组满足这些条件&#xff0c;返回 0 …