国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何以孫悟空七十二變?nèi)ダ斫庠湍J剑?/h1>

這篇具有很好參考價(jià)值的文章主要介紹了如何以孫悟空七十二變?nèi)ダ斫庠湍J??。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

本文主要講述原型模式,文中使用通俗易懂的案例,使你更好的學(xué)習(xí)本章知識(shí)點(diǎn)并理解原理,做到有道無術(shù)。

一.什么是原型模式

原型模式是23種設(shè)計(jì)模式中創(chuàng)建型模式的一種,它關(guān)注的是用一個(gè)已經(jīng)存在的實(shí)例對象作為原型,通過復(fù)制該原型對象來創(chuàng)建一個(gè)和原型對象相同的新對象。

二.生活中的原型模式

1.孫悟空

孫悟空有獨(dú)一無二的法寶如意金箍棒和眾多法術(shù),其中有一個(gè)名為身外身法的道術(shù),孫悟空拔身上的毛幻化出另一個(gè)自己,這個(gè)大家應(yīng)該有印象吧,這個(gè)幻化出新的分身就跟設(shè)計(jì)模式中的原型模式很相似。

如何以孫悟空七十二變?nèi)ダ斫庠湍J剑? referrerpolicy=

2.哪吒

哪吒不管是西游記還是封神榜中都出現(xiàn)過,也是江帥所喜歡的中國神話人物之一,哪吒雖然沒有孫悟空會(huì)身外身法,但是他會(huì)三頭六臂,通過這個(gè)法術(shù),哪吒會(huì)變換出2個(gè)新的頭顱和2對新的手臂,而這個(gè)三頭六臂是以頭或者手臂為參照物變化出來的,就跟設(shè)計(jì)模式中的原型模式很相似。

如何以孫悟空七十二變?nèi)ダ斫庠湍J剑? referrerpolicy=

3.漩渦鳴人

旋渦鳴人是日本漫畫中火影忍者的人物,影分身之術(shù)是他最厲害的忍術(shù)之一。這個(gè)忍術(shù)是能夠變幻出多個(gè)相同的自己,以自己為參照物根據(jù)查克拉的量來變幻出不同的數(shù)量,這就跟設(shè)計(jì)模式中的原型模式很相似。

如何以孫悟空七十二變?nèi)ダ斫庠湍J剑? referrerpolicy=

三.原型模式的實(shí)現(xiàn)

接下來江帥以孫悟空的身外身法之術(shù)來舉例,通過原型模式來實(shí)現(xiàn)。先創(chuàng)建一個(gè)武器類,再創(chuàng)建一個(gè)孫悟空的類并實(shí)現(xiàn)克隆接口

package com.qianfeng.ran;

/*
* @author:江帥
*      孫悟空類
*/
public class SunWuKong implements Cloneable{
    //名字
    private String name;
    //武器
    private Weapon weapon;

    public SunWuKong() {
    }

    public SunWuKong(String name, Weapon weapon) {
        this.name = name;
        this.weapon = weapon;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Weapon getWeapon() {
        return weapon;
    }

    public void setWeapon(Weapon weapon) {
        this.weapon = weapon;
    }

    @Override
    public String toString() {
        return "SunWuKong{" +
            "name='" + name + ''' +
            ", weapon=" + weapon +
            '}';
    }

    //身外身之術(shù)
    @Override
    protected Object clone() throws CloneNotSupportedException {
        //通過 Object 類的 clone() 克隆出新的孫悟空
        SunWuKong sunWuKong = (SunWuKong)super.clone();
        //新的分身名等同當(dāng)前名
        sunWuKong.setName(name);
        //新的分身手持同樣的武器,但為新的對象
        sunWuKong.setWeapon(new Weapon(weapon.getName(),weapon.getSource()));
        return sunWuKong;
    }
}


/*
 * @author:江帥
 *      武器類
 */
public class Weapon {
    //武器名
    private String name;
    //來源
    private String source;

    public Weapon() {
    }

    public Weapon(String name, String source) {
        this.name = name;
        this.source = source;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    @Override
    public String toString() {
        return "Weapon{" +
                "name='" + name + ''' +
                ", source='" + source + ''' +
                '}';
    }
}

最后通過原型模式來創(chuàng)建孫悟空的分身。

package com.qianfeng.ran;

/*
 * @author:江帥
 *      客戶端
 */
public class Demo {
    public static void main(String[] args) throws CloneNotSupportedException {
        //phantom
        //創(chuàng)建孫悟空對象,擁有東海龍宮的如意金箍棒
        SunWuKong sunWuKong = new SunWuKong("孫悟空",new Weapon("如意金箍棒","東海龍宮"));
        //調(diào)用克隆方法創(chuàng)建2個(gè)分身    --  身外身之術(shù)
        SunWuKong phantom1 = (SunWuKong)sunWuKong.clone();
        SunWuKong phantom2 = (SunWuKong)sunWuKong.clone();

        //執(zhí)行結(jié)果:
        //SunWuKong{name='孫悟空', weapon=Weapon{name='如意金箍棒', source='東海龍宮'}}
        System.out.println(sunWuKong.toString());
        //執(zhí)行結(jié)果:
        //SunWuKong{name='孫悟空', weapon=Weapon{name='如意金箍棒', source='東海龍宮'}}
        System.out.println(phantom1.toString());
        //執(zhí)行結(jié)果:
        //SunWuKong{name='孫悟空', weapon=Weapon{name='如意金箍棒', source='東海龍宮'}}
        System.out.println(phantom2.toString());

        //改變分身的武器和出產(chǎn)地
        phantom1.getWeapon().setName("芭蕉扇");
        phantom1.getWeapon().setSource("火焰山");
        phantom2.getWeapon().setName("紫金紅葫蘆");
        phantom2.getWeapon().setSource("太上老君");

        //執(zhí)行結(jié)果:
        //SunWuKong{name='孫悟空', weapon=Weapon{name='如意金箍棒', source='東海龍宮'}}
        //執(zhí)行結(jié)果:
        System.out.println(sunWuKong.toString());
        //執(zhí)行結(jié)果:
        //SunWuKong{name='孫悟空', weapon=Weapon{name='芭蕉扇', source='火焰山'}}
        System.out.println(phantom1.toString());
        //執(zhí)行結(jié)果:
        //SunWuKong{name='孫悟空', weapon=Weapon{name='紫金紅葫蘆', source='太上老君'}}
        System.out.println(phantom2.toString());
    }
}

四.總結(jié)

在Java中克隆新的對象會(huì)產(chǎn)生相同的引用,改變克隆對象的內(nèi)容會(huì)改變到原型對象,這個(gè)屬于淺拷貝,就像咱們的案例,如果用的是淺拷貝,打印結(jié)果會(huì)是3個(gè)武器都是來自太上老君的紫金紅葫蘆。

而使用原型模式克隆出來的對象則跟原型對象不是同一個(gè)地址,改變克隆對象不會(huì)影響原型對象,這個(gè)屬于深拷貝,如案例所示每個(gè)對象里的內(nèi)容不會(huì)因?yàn)閯e的對象的改變而改變。

下一章,將帶大家學(xué)習(xí)市場供需關(guān)系(設(shè)計(jì)模式之生產(chǎn)者和消費(fèi)者模式)。文章來源地址http://www.zghlxwxcb.cn/news/detail-474496.html


到了這里,關(guān)于如何以孫悟空七十二變?nèi)ダ斫庠湍J??的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 一百七十二、Flume——Flume采集Kafka數(shù)據(jù)寫入HDFS中(親測有效、附截圖)

    一百七十二、Flume——Flume采集Kafka數(shù)據(jù)寫入HDFS中(親測有效、附截圖)

    作為日志采集工具Flume,它在項(xiàng)目中最常見的就是采集Kafka中的數(shù)據(jù)然后寫入HDFS或者HBase中,這里就是用flume采集Kafka的數(shù)據(jù)導(dǎo)入HDFS中 kafka_2.13-3.0.0.tgz hadoop-3.1.3.tar.gz apache-flume-1.9.0-bin.tar.gz # cd ?/home/hurys/dc_env/flume190/conf # vi ?evaluation.properties ### Name agent, source, channels and sink ali

    2024年02月09日
    瀏覽(19)
  • [Python從零到壹] 七十二.圖像識(shí)別及經(jīng)典案例篇之OpenGL入門及繪制基本圖形和3D圖

    十月太忙,還是寫一篇吧!祝大家1024節(jié)日快樂O(∩_∩)O 歡迎大家來到“Python從零到壹”,在這里我將分享約200篇Python系列文章,帶大家一起去學(xué)習(xí)和玩耍,看看Python這個(gè)有趣的世界。所有文章都將結(jié)合案例、代碼和作者的經(jīng)驗(yàn)講解,真心想把自己近十年的編程經(jīng)驗(yàn)分享給大家

    2024年02月06日
    瀏覽(18)
  • “悟空網(wǎng)盤”操作教程(保姆級),“星子助推”小程序操作方法教程

    “悟空網(wǎng)盤”操作教程(保姆級),“星子助推”小程序操作方法教程

    1、網(wǎng)盤有著天然的傳播優(yōu)勢:網(wǎng)盤的便利性、效率和安全性,使得個(gè)人能夠更加輕松地存儲(chǔ)、共享和管理數(shù)據(jù)。 2、便捷性:網(wǎng)盤允許用戶隨時(shí)隨地上傳和下載文件,只要有互聯(lián)網(wǎng)連接,用戶就可以訪問和分享文件,大大提升了傳播的便利性。 3、 大容量存儲(chǔ):與傳統(tǒng)的物理

    2024年02月22日
    瀏覽(97)
  • 滬上十二少-淺談“交易如何進(jìn)場”

    滬上十二少-淺談“交易如何進(jìn)場”

    今天和大家分享一下“交易進(jìn)場的問題”。 用黑色來舉個(gè)例子吧,螺紋鋼和鐵礦石這兩個(gè)標(biāo)的,2020年從開年至今我都是一個(gè)方向——做多,但上周我開始做空了。我一個(gè)做基本面的學(xué)生跟我說,他在黑色上因?yàn)槎囝^思維太重了,所以空頭做的戰(zhàn)戰(zhàn)兢兢。這是事實(shí),很多交易

    2024年02月03日
    瀏覽(17)
  • android 如何分析應(yīng)用的內(nèi)存(十二)——HWASan

    android 如何分析應(yīng)用的內(nèi)存(十二)——HWASan

    上一篇介紹了ASan,這次介紹ASan的加強(qiáng)版HWASan 從NDK r21和Android 10 開始,Android支持HWAsan。HWAsan僅僅支持arm64架構(gòu)的設(shè)備。 HWASan需要系統(tǒng)的支持,因此,需要重新編譯系統(tǒng)鏡像??梢允莂ndroid模擬器,也可以是真機(jī)。 本次實(shí)驗(yàn),選擇了Pixel3的真機(jī)作為演示。同時(shí)使用了android-12.0

    2024年02月15日
    瀏覽(18)
  • 第二百三十二回 如何通過相機(jī)獲取圖片文件

    第二百三十二回 如何通過相機(jī)獲取圖片文件

    我們在上一章回中介紹了\\\"如何混合選擇多個(gè)圖片和視頻文件\\\"相關(guān)的內(nèi)容,本章回中將介紹 如何通過相機(jī)獲取圖片文件 .閑話休提,讓我們一起Talk Flutter吧。 我們在前面章回中介紹的選擇圖片或者視頻文件的方式都是通過文件窗口進(jìn)行的,本章回中將介紹如何通過相機(jī)獲取圖

    2024年02月20日
    瀏覽(21)
  • 十二、MySQL(DQL)分組/排序/分頁查詢?nèi)绾螌?shí)現(xiàn)?

    十二、MySQL(DQL)分組/排序/分頁查詢?nèi)绾螌?shí)現(xiàn)?

    (1)基礎(chǔ)語法: (2)注意事項(xiàng): (3)理解:? ????????select后的“字段列表”是由from后的參數(shù)決定的,where的執(zhí)行時(shí)間在分組操作之前,having的執(zhí)行時(shí)間在分組操作之后。 執(zhí)行時(shí)間:where分組操作having 新的數(shù)據(jù)類型 (1)根據(jù)性別分組,并統(tǒng)計(jì)男女員工的數(shù)量 (2)根

    2024年02月10日
    瀏覽(18)
  • 目標(biāo)檢測筆記(十二):如何通過界面化操作YOLOv5完成數(shù)據(jù)集的自動(dòng)標(biāo)注

    目標(biāo)檢測筆記(十二):如何通過界面化操作YOLOv5完成數(shù)據(jù)集的自動(dòng)標(biāo)注

    通過界面化操作YOLOv5完成數(shù)據(jù)集的自動(dòng)標(biāo)注的意義在于簡化數(shù)據(jù)標(biāo)注的流程,提高標(biāo)注的效率和準(zhǔn)確性。 傳統(tǒng)的數(shù)據(jù)集標(biāo)注通常需要手動(dòng)繪制邊界框或標(biāo)記關(guān)鍵點(diǎn),這個(gè)過程費(fèi)時(shí)費(fèi)力且容易出錯(cuò)。而通過界面化操作YOLOv5完成數(shù)據(jù)集的自動(dòng)標(biāo)注,可以實(shí)現(xiàn)自動(dòng)識(shí)別目標(biāo)并生成標(biāo)

    2024年02月11日
    瀏覽(20)
  • 第二百七十七回

    我們在上一章回中介紹了\\\"DropdownMenu組件\\\"相關(guān)的內(nèi)容,本章回中將介紹DropdownButton組件.閑話休提,讓我們一起Talk Flutter吧。 我們在本章回中介紹的DropdownButton組件和上一章回中介紹的DropdownMenu組件類似,主要用來實(shí)現(xiàn)下拉菜單,不過該組件在外觀上像一個(gè)帶圖標(biāo)的按鈕, 點(diǎn)擊

    2024年01月21日
    瀏覽(25)
  • 真題詳解(哈希沖突)-軟件設(shè)計(jì)(七十)

    真題詳解(哈希沖突)-軟件設(shè)計(jì)(七十)

    真題詳解(3FN)-軟件設(shè)計(jì)(六十九) https://blog.csdn.net/ke1ying/article/details/130548812 在以階段劃分的編譯器,____階段的主要作用是分析構(gòu)成程序的 字符 及由 字符構(gòu)造規(guī)則構(gòu)成的符號(hào) 是否 復(fù)合程序語言 的規(guī)定。 詞法分析 B.語法分析 C.語義分析 D.代碼生成 解析: 選擇A 在windows命令

    2024年02月03日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包