首页 > 其他分享 >创建型模式~原型模式

创建型模式~原型模式

时间:2022-10-20 23:16:27浏览次数:37  
标签:结点 对象 创建 模式 原型 内存 new bao public

preknowledge:

1 值类型 & 引用类型 ~ 内存四区

  值类型:int float double

  引用类型:string 实例对象

  内存四区:OP将内存划分为四个区域:代码段,全局变量区,栈,堆 ~ 不同的内存管理

      全局变量区:static的方法放在全局变量区,该方法是属于类的方法

      栈:存放的变量具有生命周期,其中保存的数值由操作系统管理,只可压进栈基本的有确定长度单位的~值类型

      堆:存放长度单位不确定的~引用类型

2 浅克隆 & 深克隆

  浅克隆:只复制了栈区所指向堆区的地址,堆区的数据没有复制,所以复制出的与原对象指向同一个饮用类型的变量

      只考虑所复制的对象,而不考虑其所引用的成员对象

      java中Object类提供的clone()方法

      

 深克隆:复制代码,引用类型,值类型

      引用其他对象的变量将指向被复制过的新对象

      

3 Java中的Stream

  java利用Stream简化了输入输出的过程:

  OutputStream:输出到外部(磁盘,内存缓存区...)

  InputStream:输入到程序的内部(可以从文件,网络接口,内存缓存区...中输入)

  过程:

    定义输入流(定义来源,属于结点流)~定义处理流1(对输入数据进行的操作1)~处理流2 ...~ 定义输出流(定位输出的位置,属于结点流)

    注意:需要由结点流开始,结点流结束

  java中的序列化:方便对象在计算机间的传递 ~ java中该过程需要用到Stream

          ~  A计算机对二进制代码进行复制,B计算机再对该二进制代码进行还原

            ~ 类支持该功能使用:serializable标识接口(该接口为空,作用为使jdk提前知道并作准备)

          ~ 深克隆中:实例化后的实例需要被序列化

具体例:

 1 import java.io.*;
 2 
 3 public class Email implements Serializable
 4 {
 5     private Attachment attachment = null;
 6     public Email () 
 7     {
 8         this.attachment = new Attachment();
 9     }
10 
11     public Object deepClone () throws IOException,ClassNotFoundException,OptionalDataExecption
12   {
13     //将对象写入流中
14     ByteArrayOutputStream bao = new ByteArrayOutputStream();//字节数组输出流标明数据的来源地(文本流:文本形式;字节流:直接操作二进制)
15     ObjectOutputStream oos = new ObjectOutputStream(bao);//处理流:序列化为一个Object,转化为Object,bao:输出位置结点流处理完给其保存
16     oos.writeObject(this);              //this:从缓存区中还原出一个新的对象,Email自身实例把当前实例对象序列完再写入到结点bao中
17 
18     //将对象从流中取出
19     ByteArrayInputStream bis = new ByteArrayInputStream(bao.toByteArray());//缓存区按字节数组形式读取出
20     ObjectInputStream bis = new ObjectInputStream(bis);            //处理流
21     return(bis.readObject());                            //反序列化,返回对象
22   }
23 
24 public Attachment getAttachment()
25   {
26     return this.attachment;
27   }
28 
29 public void display(){
30     System.out.println(“read the Email”);
31   }
32 }


 

 

 

 

 

  

标签:结点,对象,创建,模式,原型,内存,new,bao,public
From: https://www.cnblogs.com/luoxiaoluo/p/16811009.html

相关文章

  • defaultdict创建字典
    因为字典的hash性所以key一定是唯一的-在创建字典的时候可以想象它的可以做到的事情是,unique后对数据分类或统计-但是字典中有多少唯一的值并不确定-此时引入default......
  • 生产者消费者模式
    生产者消费者模式(Java实现)定义在⼀个⽣产环境中,⽣产者和消费者在同⼀时间段内共享同⼀块缓冲区,⽣产者负责向缓冲区添加数据,消费者负责从缓冲区取出数据使用资源类......
  • VS2022创建Windows服务程序的方法步骤
    创建一个Windows服务程序可以创建Windows服务程序打开VS2022,新建项目。创建成功后的目录结构如左侧所示,至此项目构建完成。配置相关信息添加安装程序重新生......
  • 今天说下怎么创建Java后端框架Spring Boot的项目
    使用java编程,就不得不提到久负盛名的Java后端框架SpringBoot今天来跟大家说下怎么创建SpringBoot的第一个项目,都需要做哪些准备吧。首先介绍下SpringBoot主要提供了......
  • .Net Core WebApi 控制器自动创建文件夹上传图片
    ///<summary>///异步图片或文件上传///</summary>///<paramname="formFile"></param>///<returns></returns>[Http......
  • 单例模式在 Runtime 类中的应用
    JDK中java.lang.Runtime类是一个单例类每个Java应用在运行时会启动一个JVM进程,每个JVM进程都只对应一个Runtime实例,用于查看JVM状态以及控制JVM行为。进程......
  • 观察者模式在 JDK 中的应用
    GoogleGuava的EventBus框架,它提供了观察者模式的骨架代码。使用EventBus,不需要从零开始开发观察者模式。实际上,JavaJDK也提供了观察者模式的简单框架实现。在平时的......
  • Kubernetes创建pod
    1创建tomcat的相关配置,配置tomcat的镜像和对外暴露的接口mkdir/usr/local/k8scd/usr/local/k8s/touchmytomcat.rc.yamltouchmytomcat.svc.yamlmytomcat.rc.ya......
  • 设计模式之单例模式
    简介在实际开发中,为了节约系统资源,有时需要确保系统中某个类只有唯一一个实例,当这个唯一实例创建成功之后,无法再创建一个同类型的其他对象,所有的操作都只能基于这个唯一实......
  • Tutorial 6_原型模式
    向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。浅克隆  深克隆  ......