设计模式、系统设计 record part02

软件设计模式

这里是引用
1.应对重复发生的问题
2.解决方案
3.可以反复使用


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.本质面向对象
2.优点很多


在这里插入图片描述
1.创建型-创建和使用分离
2.结构型-组合
3.行为型-协作
5+7+11=23种模式


UML-统一建模语言-Unified Modeling Language

在这里插入图片描述
1.可视化图形化
2.各种图(9种图)
3.可以同时表示静态信息、动态信息


类图-class diagram

这里是引用
就是图形化显式
在这里插入图片描述
className,field,method
+public,-private,#protected
在这里插入图片描述

关联关系

单向关联:
在这里插入图片描述
field:type 成员变量:address 其属性 :Address (Address 是一个类) 关联关系 is
最常用的,类与类之间的关系
注意,单项关联有一个箭头
实线+箭头
双向关联:
在这里插入图片描述
各自持有,对方的类,来当作自己的成员变量,
注意,双向关联没有箭头
关联:
在这里插入图片描述


聚合关系

这里是引用
1.整体、成员(也叫部分)
2.成员(部分)独立存在
注意,聚合关系用菱形表示,不是箭头,而且是空心菱


组合关系

这里是引用
1.整体、成员(也叫部分)
2.成员(部分)能独立存在
注意,组合关系用菱形表示,不是箭头,是实心菱


依赖关系

在这里插入图片描述
1.耦合度最弱,
2.临时性的关系(不是整体和部分它们之间那样的关系)
3.虚线+箭头指向,被使用的类


继承关系

在这里插入图片描述
1.耦合度最强,
2.父子关系
3.实线空心三角形
4.指向父类
注意,继承关系使用实线+空心三角


实现关系

这里是引用
1.接口、实现类
2.实现关系使用虚线空心三角形
3.指向接口
注意,实现关系使用虚线+空心三角


单例模式

这里是引用
在这里插入图片描述
单例,使用一个内存空间,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
private static LazySingleton instance;
LazySingleton 是类型,
instance 是成员变量,
相当于,private static string color;
成员变量的类型写在成员变量前面并用空格连接它们,
注意,懒汉式单例模式,在加载类的时候,并没有单例生成,
只有在第一次调用getInstance()方法的时候,才会创建单例对象,
单例对象代码,如下:
在这里插入图片描述
使用测试类Test1验证在多次调用后,产生的是否为单例对象(即是否是同一个对象),代码如下:
在这里插入图片描述
测试结果,如下:
在这里插入图片描述
内存地址相同,都是4554617c,说明这4个实例就是同一个实例,即单例实例
在这里插入图片描述
注意,饿汉单例模式,在类创建的同时,就会同步建立一个静态的单例对象,之后也不会再作改变。
饿汉式代码,如下:
在这里插入图片描述
注意,使用final修饰的变量 ,表示其内存地址就已经固定了,不会再发生改变
测试在多次调用后,产生的实例是否是同一个实例,测试代码如下:
在这里插入图片描述
测试结果如下:
在这里插入图片描述
显然是同一个内存地址,说明再经过了3次调用,每次都得到同一个实例,即同一个单例

枚举类型,创建单例代码,如下:
在这里插入图片描述
注意,这里创建SingletonEnum类之前要手工选择Java中的enum代码,如下:
在这里插入图片描述
测试类代码如下:
在这里插入图片描述
测试结果,如下:
在这里插入图片描述
说明是同一个单例,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用Runtime的单例对象获取Java虚拟机的内存总量、最大内存,代码如下:
在这里插入图片描述
用Runtime的单例对象执行Windows命令的代码如下:
在这里插入图片描述
运行结果如下:
在这里插入图片描述
实现上述两个功能,完整代码,如下:
在这里插入图片描述
注意,主方法上有一个抛出异常的代码,
在这里插入图片描述
把执行ipconfig的结果存放到process变量里,
在这里插入图片描述
用getInputStream方法将变量process中的数据转成流数据放到变量inputStream中,
在这里插入图片描述
准备一个100兆空间大小的字节类型的变量arr,
在这里插入图片描述
把变量inputStream中的流数据通过read方法存放到字节变量 arr中,
在这里插入图片描述
把b个字节数据转成gbk码的字符串,


当通过Runtime执行像ipconfig这样的命令时,
命令的输出会被重定向到操作系统的一个进程间通信(IPC)通道,
这个通道我们不能直接以文本形式访问。
为了能够读取和处理这些输出,我们需要通过特定的流接口来访问这些数据。

Process类的getInputStream()方法就是用来获取这样一个InputStream对象的。

这个InputStream代表了子进程的标准输出流。

简单来说,命令的输出在操作系统层面是以字节流的形式存在的,
而InputStream正是Java中处理字节流的标准方式。

通过将进程的输出流转换为InputStream,
我们可以利用Java的I/O流库来读取、解析这些原始的字节数据,进而转换成我们能够理解和处理的格式,比如字符串。

September2024the27thFriday

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十一集:制作法术系统的回血机制和火球机制

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作法术系统的回血机制 1.制作动画以及使用UNITY编辑器编辑2.使用代码和PlaymakerFSM制作回血机制二、制作法术系统的火球机制 1.制作动画以及使用UNITY编…

鸿蒙开发知识点速记全解

入门 1、API涵盖应用框架、系统、媒体、图形、应用服务、AI六大领域。 应用框架相关Kit开放能力:Ability Kit(程序框架服务)、ArkUI(方舟UI框架)等。系统相关Kit开放能力:Universal Keystore Kit&#xf…

测试管理新增视图与高级搜索功能,测试计划支持一键生成缺陷详情,MeterSphere开源持续测试工具v3.3版本发布

2024年9月29日,MeterSphere开源持续测试工具正式发布v3.3版本。 在这一版本中,接口测试方面,接口导入功能支持导入Postman、JMX、HAR和MeterSphere格式的文件,接口场景的自定义请求步骤支持cURL快捷导入;测试管理方面…

VUE3.5版本解读

官网:Announcing Vue 3.5 | The Vue Point 2024年9月1日,宣布 Vue 3.5“天元突破:红莲螺岩”发布! 反应系统优化 在 3.5 中,Vue 的反应系统经历了另一次重大重构,在行为没有变化的情况下实现了更好的性能…

HarmonyOS/OpenHarmony 如何将rawfile中文件复制到沙箱中

关键词:h5离线加载、HarmonyOS、OpenHarmony、文件操作、复制、解压 当下有一个场景,需要离线加载 h5离线资源zip包,并实现资源包的动态更新,那么仅靠 $rawfile并不能实现该功能,那么我们该如何实现? 我们…

在线代码编辑器

在线代码编辑器 文章说明前台核心代码后台核心代码效果展示源码下载 文章说明 采用Java结合vue3设计实现的在线代码编辑功能,支持在线编辑代码、运行代码,同时支持导入文件,支持图片识别,支持复制代码,可将代码导出为图…

【项目开发】跨专业合作平台实战(附源码)

原创文章,禁止转载。 文章目录 项目背景+项目需求开发语言及环境数据库构建项目介绍+项目展示1、用户注册界面(register.php)2、用户登录界面(login.php)3、项目大厅界面(project_hall.php)4、标签详情界面(tag_detail.php)5、项目详情界面(project_detail.php)6、发起招募界面…

【mod分享】侠盗猎魔2冬日mod,贴图高清化,增加下雪场景,支持光追,并且增加红色霓虹灯

今天小编为大家带来一个新的游戏mod,这次mod主要是修改了游戏《侠盗猎魔2》,我给游戏增加了下雪的场景,并且增加了红色的霓虹灯,整体让游戏沉浸在一种诡异的圣诞气氛中。并且我还提高了游戏材质的分辨率。更多细节需要玩家自己探索…

[高频题]Leetcode 815 Bus route

题意 给定数组routes,代表每一辆车能够到达哪些车站,求最少需要多少次中转我才能够到达终点 https://leetcode.com/problems/bus-routes/description/ routes [[1,2,7],[3,6,7]], source 1, target 6 answer 2 理论上我应该建立车站到车站&#xf…

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【下篇】 一、上篇回顾二、项目准备2.1 准备模板项目2.2 支持计时功能2.3 配置UART4引脚2.4 支持printf重定向到UART42.5 支持printf输出浮点数2.6 支持printf不带\r的换行2.7 支持ccache编译缓存 三、TFLM集成3.1 添加tfli…

设计模式-策略模式-200

优点:用来消除 if-else、switch 等多重判断的代码,消除 if-else、switch 多重判断 可以有效应对代码的复杂性。 缺点:会增加类的数量,有的时候没必要为了消除几个if-else而增加很多类,尤其是那些类型又长又臭的 原始代…

【Go】-基于Gin框架的IM通信项目

目录 项目介绍 项目分析 项目分层 初始化 首页功能 获取首页 注册 进入聊天界面 用户模块 创建用户 删除用户 修改用户信息 查找用户 通过名字和密码查找用户 获取用户列表 好友模块 获取所有好友 添加好友 发送消息 ws升级和订阅redis管道接收消…

深入理解JavaScript 的原型继承

JavaScript 的原型链继承机制和 Java 的类继承机制有明显的区别,虽然它们都用于实现对象之间的继承,但它们的实现方式、概念以及运行机制都不同。 1. JavaScript 的原型继承 JavaScript 是基于原型链的继承,主要依赖对象的 __proto__ 属性或…

小鱼ROS2 g++编译报错

把humble换成jazzy ,起初报错 /opt/ros/jazzy/include/rcl_interfaces/rcl_interfaces/srv/detail/list_parameters__struct.hpp:267:10: fatal error: service_msgs/msg/detail/service_event_info__struct.hpp: 没有那个文件或目录 267 | #include "servi…

基于单片机远程家电控制系统设计

本设计基于单片机的远程家电控制系统,以STC89C52单片机为核心,通过液晶LCD1602实时显示并控制,利用ESP8266WiFi模块实现本地与云平台的连接,最终实现远程对于灯光,热水器等家电的开关控制。同时,系统设有防…

MongoDB 聚合管道

参考: 聚合管道 - MongoDB 手册 v7.0 介绍 聚合管道由一个或多个处理文档的阶段组成: 每个阶段对输入文档执行一个操作。例如,某个阶段可以过滤文档、对文档进行分组并计算值。 从一个阶段输出的文档将传递到下一阶段。 一个聚合管道可以返回针对文档…

HTB:Oopsie[WriteUP]

目录 连接至HTB服务器并开启靶机 1.With what kind of tool can intercept web traffic? 2.What is the path to the directory on the webserver that returns a login page? 3.What can be modified in Firefox to get access to the upload page? 4.What is the acc…

html+css+js实现step进度条效果

实现效果 代码实现 HTML部分 <div class"box"><ul class"step"><li class"circle actives ">1</li><li class"circle">2</li><li class"circle">3</li><li class&quo…

【设计模式-模板】

定义 模板方法模式是一种行为设计模式&#xff0c;它在一个方法中定义了一个算法的骨架&#xff0c;并将一些步骤延迟到子类中实现。通过这种方式&#xff0c;模板方法允许子类在不改变算法结构的情况下重新定义算法中的某些特定步骤。 UML图 组成角色 AbstractClass&#x…

python编程开发“人机猜拳”游戏

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…