设计模式-原型模式

原型模式是一种创建型设计模式,用于创建重复的对象,提高效率。在Java中,通过实现Cloneable接口和重写clone()方法实现对象的克隆。文章提供了Sheep类的示例,展示了如何进行浅拷贝和深拷贝的区别:浅拷贝只复制对象本身,引用对象不变;深拷贝则会创建引用对象的新实例。
摘要由CSDN通过智能技术生成

简介

原型模式是为了创建一个重复的对象,可以想象成克隆。有了原型模式,我们创建重复的对象时就不需要将原来对象的属性都传到新对象里,这样可以大大提升效率,提升性能。

原型模式是一种创建型设计模式,允许通过一个对象克隆出一个新的对象,无需知道其中任何细节,并且这个克隆出的对象会随着原始对象的变化而变化

实现就是将克隆的过程交给原始对象。原型定义一个克隆的方法,原始对象实现这个原型的克隆方法,然后通过调用这个克隆方法就可以实现克隆出一个一摸一样的新对象。

所以,支持克隆的对象就称为原型。

实现代码

public class Sheep implements Cloneable{
    public String name;
    public String age;
    public Sheep friend;

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public String toString() {
        return "Sheep{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", friend=" + friend +
                '}';
    }
}
public class Main {
    public static void main(String[] args) throws CloneNotSupportedException {
        Sheep sheep = new Sheep();
        sheep.name = "小羊";
        sheep.age = "1";
        Sheep firend = new Sheep();
        firend.name = "大羊";
        firend.age = "2";
        sheep.friend = firend;

        Sheep clone = (Sheep) sheep.clone();
        System.out.println(sheep);
        System.out.println(clone);
    }
}

执行结果:
在这里插入图片描述
上面代码中Clonable接口就是我们所说的原型,它定义了一个可克隆的接口,Sheep就是原型类,它可以通过clone来克隆一个新的Sheep对象。

浅拷贝

浅拷贝就是对于一个对象,对于它的基本数据类型,会直接进行值传递,但是对于引用数据类型则只是引用传递,就是新对象的引用数据类型的属性指向老对象的属性,而不是创建一个新对象。
在这里插入图片描述

深拷贝

深拷贝则反之,基本数据类型会进行值传递,引用数据类型也会创建一个新的对象,然后引用数据类型指向新的对象。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值