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

本文详细介绍了Java中的原型模式,包括其概念、UML图、深克隆与浅克隆的区别,并通过实例展示了如何实现深克隆和浅克隆,最后讨论了原型模式的优点、缺点及适用场景。通过学习,读者能深入理解原型模式在Java中的应用。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值