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

【編碼魔法師系列_構(gòu)建型4】原型模式(Prototype Pattern)

這篇具有很好參考價(jià)值的文章主要介紹了【編碼魔法師系列_構(gòu)建型4】原型模式(Prototype Pattern)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【編碼魔法師系列_構(gòu)建型4】原型模式(Prototype Pattern),設(shè)計(jì)模式,原型模式,java,開(kāi)發(fā)語(yǔ)言,程序人生,設(shè)計(jì)模式,后端
??直達(dá)編碼魔法師系列其他文章??

學(xué)會(huì)設(shè)計(jì)模式,你就可以像擁有魔法一樣,在開(kāi)發(fā)過(guò)程中解決一些復(fù)雜的問(wèn)題。設(shè)計(jì)模式是由經(jīng)驗(yàn)豐富的開(kāi)發(fā)者們(GoF)凝聚出來(lái)的最佳實(shí)踐,可以提高代碼的可讀性、可維護(hù)性和可重用性,從而讓我們的開(kāi)發(fā)效率更高。通過(guò)不斷的練習(xí)和實(shí)踐,掌握其中的奧妙,選擇合適的設(shè)計(jì)模式,能為我們的項(xiàng)目增加一絲神奇的魔力。

概念:

用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。

實(shí)例:

克隆原本的五菱宏光對(duì)象

目的:

原本的五菱宏光修改配置后,克隆對(duì)象配置不變

適用場(chǎng)景:

需要復(fù)制一些對(duì)象,同時(shí)又希望代碼獨(dú)立于這些對(duì)象所屬的具體類

優(yōu)點(diǎn):

1、使用原型模式創(chuàng)建實(shí)例對(duì)象比直接new一個(gè)對(duì)象性能好,尤其創(chuàng)建大對(duì)象,性能的差別非常明顯。
2、簡(jiǎn)化創(chuàng)建對(duì)象的過(guò)程,可以直接修改現(xiàn)有的對(duì)象實(shí)例的值,達(dá)到復(fù)用的目的

弊端:

1、每個(gè)對(duì)象內(nèi)部都要覆蓋Object的clone方法才能被拷貝,當(dāng)對(duì)類進(jìn)行改造時(shí),需要修改代碼,違背了“開(kāi)閉原則”。
2、如果克隆引用數(shù)據(jù)類型,需要遞歸克隆

類圖:

【編碼魔法師系列_構(gòu)建型4】原型模式(Prototype Pattern),設(shè)計(jì)模式,原型模式,java,開(kāi)發(fā)語(yǔ)言,程序人生,設(shè)計(jì)模式,后端

框架用到的地方:

Java 中,Object 的 clone() 方法

Coding:

Car:

public class Car {
    private String name;
    private Integer box;
    private String power;

    public String getName() {
        return name;
    }

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

    public Integer getBox() {
        return box;
    }

    public void setBox(Integer box) {
        this.box = box;
    }

    public String getPower() {
        return power;
    }

    public void setPower(String power) {
        this.power = power;
    }

    public Car() {
    }

    public Car(Car car) {
        this.name = car.getName();
        this.box = car.getBox();
        this.power = car.getPower();
    }

    public Car clone() {
        return new Car(this);
    }

    public void show() {
        System.out.println(
                "一輛" + this.getPower() + this.getBox() + "廂" + this.getName()
        );
    }
}

測(cè)試:

public class Test {
    public static void main(String[] args) {
        Car wuLing = new Car();
        wuLing.setName("五菱宏光");
        wuLing.setBox(2);
        wuLing.setPower("汽油");
        System.out.println("----------原始配置----------");
        wuLing.show();
        //通過(guò)clone方法創(chuàng)建的新對(duì)象
        Car clone = wuLing.clone();
        wuLing.setBox(3);
        //地址引用
        Car wuLing2 = wuLing;
        System.out.println("----------修改配置后wuLing----------");
        wuLing.show();
        System.out.println("----------原始配置后wuLing2----------");
        wuLing2.show();
        System.out.println("----------原始配置后clone----------");
        clone.show();
    }
}

我們可以看到wuLing2是直接將wuLing復(fù)制給自己,因?yàn)镴ava的賦值只是傳遞地址,所以wuLing2會(huì)隨著wuLing的配置修改而改變。
但是調(diào)用clone的方法并沒(méi)有因?yàn)閣uLing的配置修改而修改,這是因?yàn)閏lone是一個(gè)被克隆出來(lái)的全新對(duì)象(java自帶的clone方法是淺拷貝)。
如果您想了解更多關(guān)于Java深拷貝和淺拷貝的信息,可以到小名的另一篇文章:Java對(duì)象淺拷貝與深拷貝進(jìn)行詳細(xì)了解??文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-805243.html

測(cè)試結(jié)果:

----------原始配置----------
一輛汽油2廂五菱宏光
----------修改配置后wuLing----------
一輛汽油3廂五菱宏光
----------原始配置后wuLing2----------
一輛汽油3廂五菱宏光
----------原始配置后clone----------
一輛汽油2廂五菱宏光
??直達(dá)編碼魔法師系列其他文章??

文章后期會(huì)持續(xù)優(yōu)化,如果覺(jué)得小名的文章幫助到了您,請(qǐng)關(guān)注小名,支持一下小名??,給小名的文章點(diǎn)贊??、評(píng)論?、收藏??謝謝大家啦~???
編碼魔法師系列文章,會(huì)收錄在小名的【設(shè)計(jì)模式】專欄中,希望大家可以持續(xù)關(guān)注??

到了這里,關(guān)于【編碼魔法師系列_構(gòu)建型4】原型模式(Prototype Pattern)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 設(shè)計(jì)模式—原型模式(Prototype)

    設(shè)計(jì)模式—原型模式(Prototype)

    目錄 一、什么是原型模式? 二、原型模式具有什么優(yōu)缺點(diǎn)嗎? 三、有什么缺點(diǎn)? 四、什么時(shí)候用原型模式? 五、代碼展示 ①、簡(jiǎn)歷代碼初步實(shí)現(xiàn) ②、原型模式 ③、簡(jiǎn)歷的原型實(shí)現(xiàn) ④、深復(fù)制 ⑤、淺復(fù)制 用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型創(chuàng)建新的

    2024年02月11日
    瀏覽(19)
  • 【設(shè)計(jì)模式】4、prototype 原型模式

    https://refactoringguru.cn/design-patterns/prototype 如果希望 復(fù)制對(duì)象, 可使用 “prototype 模式” 如果 “待復(fù)制的對(duì)象” 是 interface 而不是 class, 或者如果 class 有 private 變量時(shí). 無(wú)法知道 \\\"待復(fù)制的對(duì)象\\\"的細(xì)節(jié), 則需要其實(shí)現(xiàn) “clone()” 方法供外部調(diào)用. 本例希望實(shí)現(xiàn)文件系統(tǒng)的復(fù)制功能

    2024年04月15日
    瀏覽(37)
  • 原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)結(jié)構(gòu)較為簡(jiǎn)單,它是一種特殊的創(chuàng)建型模式, 當(dāng)需要?jiǎng)?chuàng)建大量相同或者相似對(duì)象時(shí) ,可以 通過(guò)對(duì)一個(gè)已有對(duì)象的復(fù)制獲取更多對(duì)象 。Java語(yǔ)言提供了較為簡(jiǎn)單的原型模式解決方案,只需要?jiǎng)?chuàng)建一個(gè)原型對(duì)象,然后通過(guò)在類中定義的克隆方法復(fù)制自己

    2024年02月03日
    瀏覽(22)
  • 原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,它用于通過(guò)復(fù)制現(xiàn)有對(duì)象來(lái)創(chuàng)建新對(duì)象,而無(wú)需依賴顯式的構(gòu)造函數(shù)。 在原型模式中,我們創(chuàng)建一個(gè)原型對(duì)象,并通過(guò)復(fù)制該原型對(duì)象來(lái)創(chuàng)建新的對(duì)象。這樣做的好處是,我們可以避免創(chuàng)建對(duì)象時(shí)的復(fù)雜實(shí)例化過(guò)程,而是通

    2024年02月15日
    瀏覽(27)
  • 5 原型模式 Prototype

    5 原型模式 Prototype

    指原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象 當(dāng)代碼不應(yīng)該依賴于需要復(fù)制的對(duì)象的具體類時(shí),請(qǐng)使用Prototype模式。 Spring源碼中的應(yīng)用 ? 1.可以不耦合具體類的情況下克隆對(duì)象 2.避免重復(fù)的初始化代碼 3.更方便的構(gòu)建復(fù)雜對(duì)象

    2024年02月22日
    瀏覽(14)
  • 原型模式(Prototype)

    原型模式(Prototype)

    原型模式是一種創(chuàng)建型設(shè)計(jì)模式,使調(diào)用方能夠復(fù)制已有對(duì)象,而又無(wú)需使代碼依賴它們所屬的類。當(dāng)有一個(gè)類的實(shí)例(原型),并且想通過(guò)復(fù)制原型來(lái)創(chuàng)建新對(duì)象時(shí),通常會(huì)使用原型模式。 原型模式包含如下角色: Prototype,原型類,用來(lái)聲明克隆方法。在絕大多數(shù)情況下

    2024年02月14日
    瀏覽(21)
  • 設(shè)計(jì)模式——原型模式(Prototype Pattern)

    設(shè)計(jì)模式——原型模式(Prototype Pattern)

    概述 ?????? 原型模式(Prototype? Pattern):使用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。原型模式是一種對(duì)象創(chuàng)建型模式。原型模式的工作原理很簡(jiǎn)單:將一個(gè)原型對(duì)象傳給那個(gè)要發(fā)動(dòng)創(chuàng)建的對(duì)象,這個(gè)要發(fā)動(dòng)創(chuàng)建的對(duì)象通過(guò)請(qǐng)求原型對(duì)象拷貝自

    2024年01月16日
    瀏覽(21)
  • 設(shè)計(jì)模式|原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,其核心思想是通過(guò)復(fù)制現(xiàn)有對(duì)象來(lái)創(chuàng)建新對(duì)象,而無(wú)需顯式地指定它們的類。這種模式通常用于當(dāng)對(duì)象的創(chuàng)建成本較高,或者對(duì)象初始化過(guò)程比較復(fù)雜時(shí)。 原型模式的主要角色包括原型接口(Prototype Interface)、具體原型類(

    2024年04月23日
    瀏覽(24)
  • 【設(shè)計(jì)模式--原型模式(Prototype Pattern)

    【設(shè)計(jì)模式--原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,它的主要目的是通過(guò)復(fù)制現(xiàn)有對(duì)象來(lái)創(chuàng)建新的對(duì)象,而無(wú)需顯式地使用構(gòu)造函數(shù)或工廠方法。這種模式允許我們創(chuàng)建一個(gè)可定制的原型對(duì)象,然后通過(guò)復(fù)制它來(lái)創(chuàng)建新的對(duì)象,從而避免了重復(fù)構(gòu)建相似的對(duì)象。 在原型模式中

    2024年02月11日
    瀏覽(22)
  • 設(shè)計(jì)模式六:原型模式(Prototype Pattern)

    原型模式是一種創(chuàng)建對(duì)象的設(shè)計(jì)模式。它允許我們通過(guò)復(fù)制一個(gè)現(xiàn)有對(duì)象來(lái)創(chuàng)建新的對(duì)象,而無(wú)需知道其具體實(shí)現(xiàn)細(xì)節(jié)。在使用原型模式時(shí),我們首先創(chuàng)建一個(gè)原始對(duì)象,然后根據(jù)需要復(fù)制該對(duì)象,以獲得新創(chuàng)建的對(duì)象。 原型模式的主要思想是基于對(duì)象的復(fù)制。通過(guò)使用原型

    2024年02月14日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包