自学内容网 自学内容网

设计模式、系统设计 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


原文地址:https://blog.csdn.net/m0_47505062/article/details/142564763

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!