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

淺談Java設計模式之原型模式知識總結(jié)

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

如何使用?

1.首先定義一個User類,它必須實現(xiàn)了Cloneable接口,重寫了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類

public class Brother{
	private String name;
}

3.應用演示類

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);
        // 我們從克隆對象user2中修改brother,看看是否會影響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.深拷貝寫法

這是User類

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

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

這是Brother類

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);
		// 我們從克隆對象user2中修改brother,看看是否會影響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沒有受到user2的影響,深拷貝成功!

5.圖解深拷貝與淺拷貝

在這里插入圖片描述

總結(jié)與思考

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

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

相關文章

  • 詳解Spring Security 簡單配置

    詳解Spring Security 簡單配置

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

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

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

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

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

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

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

    Java 由淺入深帶你掌握圖的遍歷

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

    解析Java格式字符串的使用

    本文通過實例給大家介紹了java格式字符串的使用,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    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)換示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • 手把手帶你理解java線程池之工作隊列workQueue

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

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

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

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

最新評論

长治县| 赤城县| 景洪市| 额济纳旗| 四平市| 白城市| 紫阳县| 蒲城县| 紫云| 桂平市| 昭平县| 新田县| 视频| 柘城县| 英山县| 北宁市| 玛曲县| 壶关县| 舒兰市| 沛县| 连平县| 昌图县| 阿巴嘎旗| 龙川县| 西平县| 开化县| 二连浩特市| 河曲县| 乐山市| 上栗县| 河北区| 昌吉市| 都安| 嘉黎县| 全南县| 历史| 吉隆县| 大埔县| 铁岭市| 廊坊市| 射阳县|