最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Java設(shè)計(jì)模式之原型模式知識(shí)總結(jié)

 更新時(shí)間:2021年05月26日 08:40:48   作者:?jiǎn)褑阎? 
Java原型模式主要用于創(chuàng)建重復(fù)的對(duì)象,同時(shí)又能保證性能,這篇文章就帶大家仔細(xì)了解一下原型模式的知識(shí),對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下

如何使用?

1.首先定義一個(gè)User類(lèi),它必須實(shí)現(xiàn)了Cloneable接口,重寫(xiě)了clone()方法。

public class User implements Cloneable {
    private String name;
    private int age;
    private Brother brother;

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

2.Brother類(lèi)

public class Brother{
	private String name;
}

3.應(yīng)用演示類(lèi)

public class PrototypeDemo {
    public static void main(String[] args) throws CloneNotSupportedException {
        User user1 = new User();
        user1.setName("秋紅葉");
        user1.setAge(20);
        Brother brother1 = new Brother();
        brother1.setName("七夜圣君");
        user1.setBrother(brother1);
        // 我們從克隆對(duì)象user2中修改brother,看看是否會(huì)影響user1的brother
        User user2 = (User) user1.clone();
        user2.setName("燕赤霞");
        Brother brother2 = user2.getBrother();
        brother2.setName("唐鈺小寶");
        System.out.println(user1);
        System.out.println(user2);
        System.out.println(user1.getBrother() == user2.getBrother());
    }
}

在這里插入圖片描述

4.深拷貝寫(xiě)法

這是User類(lèi)

public class User implements Cloneable {
    private String name;
    private int age;
    private Brother brother;

	/**
	* 主要就是看這個(gè)重寫(xiě)的方法,需要將brother也進(jìn)行clone
	*/
    @Override
    protected Object clone() throws CloneNotSupportedException {
        User user = (User) super.clone();
        user.brother = (Brother) this.brother.clone();
        return user;
    }
}

這是Brother類(lèi)

public class Brother implements Cloneable{
    private String name;

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

這里是結(jié)果演示

public class PrototypeDemo {
    public static void main(String[] args) throws CloneNotSupportedException {
        User user1 = new User();
        user1.setName("秋紅葉");
        user1.setAge(20);
        Brother brother1 = new Brother();
        brother1.setName("七夜圣君");
        user1.setBrother(brother1);
		// 我們從克隆對(duì)象user2中修改brother,看看是否會(huì)影響user1的brother
        User user2 = (User) user1.clone();
        user2.setName("燕赤霞");
        Brother brother2 = user2.getBrother();
        brother2.setName("唐鈺小寶");
        System.out.println(user1);
        System.out.println(user2);
        System.out.println(user1.getBrother() == user2.getBrother());
    }
}

在這里插入圖片描述

可以看到,user1的brother沒(méi)有受到user2的影響,深拷貝成功!

5.圖解深拷貝與淺拷貝

在這里插入圖片描述

總結(jié)與思考

java中object類(lèi)的clone()方法為淺拷貝必須實(shí)現(xiàn)Cloneable接口如果想要實(shí)現(xiàn)深拷貝,則需要重寫(xiě)clone()方法

到此這篇關(guān)于淺談Java設(shè)計(jì)模式之原型模式知識(shí)總結(jié)的文章就介紹到這了,更多相關(guān)Java原型模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Spring Security 簡(jiǎn)單配置

    詳解Spring Security 簡(jiǎn)單配置

    本篇文章主要介紹了詳解Spring Security 簡(jiǎn)單配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Java 高并發(fā)七:并發(fā)設(shè)計(jì)模型詳解

    Java 高并發(fā)七:并發(fā)設(shè)計(jì)模型詳解

    本文主要介紹Java高并發(fā) 并發(fā)設(shè)計(jì)模型的知識(shí),這里主要講解 1. 什么是設(shè)計(jì)模式 2. 單例模式 3. 不變模式 4. Future模式 5. 生產(chǎn)者消費(fèi)者,有需要的小伙伴可以參考下
    2016-09-09
  • SpringBoot整合ZXing實(shí)現(xiàn)二維碼和條形碼的創(chuàng)建

    SpringBoot整合ZXing實(shí)現(xiàn)二維碼和條形碼的創(chuàng)建

    如今我們?cè)絹?lái)越多的東西需要用到二維碼或者條形碼,商品的條形碼,付款的二維碼等等,所以本文小編給大家介紹了SpringBoot整合ZXing實(shí)現(xiàn)二維碼和條形碼的創(chuàng)建,文章通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Java環(huán)境變量配置教程

    Java環(huán)境變量配置教程

    這篇文章主要介紹了Java環(huán)境變量配置教程,簡(jiǎn)單介紹了java的環(huán)境變量設(shè)置方法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java 由淺入深帶你掌握?qǐng)D的遍歷

    Java 由淺入深帶你掌握?qǐng)D的遍歷

    圖的遍歷是指,從給定圖中任意指定的頂點(diǎn)(稱(chēng)為初始點(diǎn))出發(fā),按照某種搜索方法沿著圖的邊訪問(wèn)圖中的所有頂點(diǎn),使每個(gè)頂點(diǎn)僅被訪問(wèn)一次,這個(gè)過(guò)程稱(chēng)為圖的遍歷。遍歷過(guò)程中得到的頂點(diǎn)序列稱(chēng)為圖遍歷序列
    2022-03-03
  • 解析Java格式字符串的使用

    解析Java格式字符串的使用

    本文通過(guò)實(shí)例給大家介紹了java格式字符串的使用,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-02-02
  • java 輸出九九乘法表口訣的代碼

    java 輸出九九乘法表口訣的代碼

    這篇文章主要介紹了java 輸出9*9口訣的代碼,需要的朋友可以參考下
    2017-02-02
  • spring mvc4的日期/數(shù)字格式化、枚舉轉(zhuǎn)換示例

    spring mvc4的日期/數(shù)字格式化、枚舉轉(zhuǎn)換示例

    本篇文章主要介紹了spring mvc4的日期/數(shù)字格式化、枚舉轉(zhuǎn)換示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • 手把手帶你理解java線程池之工作隊(duì)列workQueue

    手把手帶你理解java線程池之工作隊(duì)列workQueue

    這篇文章主要介紹了java線程池之工作隊(duì)列workQueue,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Java 使用多線程調(diào)用類(lèi)的靜態(tài)方法的示例

    Java 使用多線程調(diào)用類(lèi)的靜態(tài)方法的示例

    這篇文章主要介紹了Java 使用多線程調(diào)用類(lèi)的靜態(tài)方法的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10

最新評(píng)論

阿拉善右旗| 昌吉市| 绥棱县| 达尔| 黎平县| 五台县| 阜新| 永清县| 马鞍山市| 宣城市| 扎囊县| 汨罗市| 海口市| 北票市| 宁安市| 南木林县| 陇南市| 合江县| 鸡泽县| 阳新县| 佳木斯市| 襄垣县| 桂阳县| 邮箱| 庆阳市| 米易县| 天镇县| 温州市| 响水县| 鹤岗市| 集贤县| 莎车县| 铜鼓县| 龙山县| 鄄城县| 洪洞县| 汉沽区| 顺义区| 英德市| 重庆市| 兴文县|