「超全超细」Java设计模式图文详解!!!

java设计模式—原型模式

Java原型模式

1、概述

啥是原型模式?

原型模式属于设计模式中的创建型中的一员,

**原型模式:**使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象!

说大白话就是自己复制自己,通过原生对象复制出一个新的对象,这两个对象结构相同且相似;

需要注意的是,原型对象自己不仅是个对象还是个工厂!并且通过克隆方式创建的对象是全新的对象,它们都是有自己的新的地址,通常对克隆模式所产生的新对象进行修改,是不会对原型对象造成任何影  响的,每一个克隆对象都是相对独立的,通过不同的方式对克隆对象进行修改后,可以得到一系列相似但不完全相同的对象。【获取资源】

2、原型UML图

image.png

3、深克隆与浅克隆

原型模式中又可细分为浅克隆和深克隆;【获取资源】

**浅克隆:**在浅克隆中,如果原型对象的成员变量是值类型(八大基本类型,byte,short,int,long,char,double,float,boolean).那么就直接复制,如果是复杂的类型,(如枚举、对象)就只复制对应的内存地址。

**深克隆:**就是什么都是单独的!全部复制,然后各自独立,修改克隆对象对于原型对象没有任何影响,对于深克隆具体克隆多深取决于业务需求和类结构设计。

4、代码案例

4.1、先来一个简单小案例热热身

这个浅克隆比较简单,让我们由浅入深的学习原型模,先看下这个有助于理解深克隆,废话不多说直接上代码

package pattern.prototype.demo;
/**
 * 苹果原型类,这就是我们要复制的对象类
 * 要想克隆一个实例必须要实现Cloneable接口,否则会抛出异常(java.lang.CloneNotSupportedException),
 * @author ningbeibei
 */
public class Apple implements Cloneable{
    //苹果品种
    public String variety;
    //数量
    public int no;

    //添加克隆这个对象的方法,
    public Apple cloneApple() {
        Object obj =null;
        try {
            obj = super.clone();
            return (Apple) obj;
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }

    public String getVariety() {
        return variety;
    }
    public void setVariety(String variety) {
        this.variety = variety;
    }
    public int getNo() {
        return no;
    }
    public void setNo(int no) {
        this.no = no;
    }
}

测试下,看结果是不是很简单,只需要实现Cloneable接口调用clone方法就OK【获取资源】

package pattern.prototype.demo;

public class test {
    public static void main(String[] args) {
        Apple a= new Apple();
        a.setVariety("富士苹果");
        System.out.println("原型对象:"+a);
        Apple b = a.cloneApple();
        System.out.println("克隆出来的新对象:"+b);
        System.out.println("两个对象是否相等:"+(a == b));
        b.setVariety("红星苹果");
        System.out.p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
直接内存访问(Direct Memory Access,DMA)是一种计算机技术,用于提高数据传输速度和减轻CPU负担。DMA原理是通过将数据直接从I/O设备传输到内存,或从内存传输到I/O设备,而不需要CPU的介入。 DMA步骤超细详解如下: 1. 配置DMA控制器:首先需要将DMA控制器配置为合适的模式,以确定数据传输的方向和其他相关参数。 2. 申请DMA通道:为了避免冲突,需要在系统中分配一个可用的DMA通道。 3. 分配DMA缓冲区:为了存储数据,需要在内存中分配一个缓冲区,用于DMA传输的读取或写入。 4. DMA请求:当需要进行数据传输时,I/O设备将发出DMA请求信号,请求DMA控制器介入数据传输。 5. DMA控制器响应:DMA控制器接收到DMA请求信号后,会将CPU暂停,并控制总线的主控权。 6. 读取或写入数据:DMA控制器根据事先配置的参数,将数据从I/O设备或内存的缓冲区中读取或写入。 7. 数据传输完成中断:当数据传输完成后,DMA控制器将发出一个中断信号,通知CPU数据已经传输完成。 8. 处理中断:CPU接收到中断信号后,根据中断类型和DMA通道编号,执行相应的中断处理程序。 9. 释放DMA通道:当数据传输完成后,需要释放DMA通道,以便其他设备或操作使用。 通过DMA技术,CPU无需直接处理数据传输过程,可以继续执行其他任务,从而提高系统的效率和响应速度。DMA在大数据传输和实时性要求较高的应用中,发挥着重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值