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

原型模式(Prototype)

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

原型模式是一種創(chuàng)建型設(shè)計(jì)模式,使調(diào)用方能夠復(fù)制已有對(duì)象,而又無(wú)需使代碼依賴它們所屬的類。當(dāng)有一個(gè)類的實(shí)例(原型),并且想通過(guò)復(fù)制原型來(lái)創(chuàng)建新對(duì)象時(shí),通常會(huì)使用原型模式。

The Prototype pattern is generally used when we have an instance of the class (prototype) and we'd like to 
create new objects by just copying the prototype.

結(jié)構(gòu)設(shè)計(jì)

原型模式包含如下角色:
Prototype,原型類,用來(lái)聲明克隆方法。在絕大多數(shù)情況下,只會(huì)有一個(gè)名為 clone 的方法。
ConcretePrototype,具體原型類,用來(lái)實(shí)現(xiàn)克隆方法。除了將原始對(duì)象的數(shù)據(jù)復(fù)制到克隆體中之外,該方法有時(shí)還需處理克隆過(guò)程中的極端情況, 例如克隆關(guān)聯(lián)對(duì)象梳理遞歸依賴等等。
原型模式類圖表示如下:
原型模式(Prototype),設(shè)計(jì)模式,原型模式,java

偽代碼實(shí)現(xiàn)

接下來(lái)將使用代碼介紹下原型模式的實(shí)現(xiàn)。

// 1.定義原型接口,用來(lái)聲明克隆方法
public interface Prototype {
    /**
     * 復(fù)制對(duì)象
     *
     * @return 復(fù)制后的對(duì)象
     */
    Prototype clone();
}
// 2、定義具體原型類(ConcretePrototype),用來(lái)實(shí)現(xiàn)克隆方法
public class ConcretePrototype implements Prototype {
    private String field;
    public ConcretePrototype() {
    }
    public String getField() {
        return field;
    }
    public ConcretePrototype(String field) {
        this.field = field;
    }
    @Override
    public Prototype clone() {
        ConcretePrototype concretePrototype = new ConcretePrototype();
        concretePrototype.field = this.field;
        return concretePrototype;
    }
}
// 3、客戶端調(diào)用
public class PrototypeClient {
    public PrototypeClient() {

    }

    // 調(diào)用方式:調(diào)用具體原型實(shí)例的克隆方法
    public void test() {
        Prototype concretePrototype = new ConcretePrototype("foo");
        ConcretePrototype clonedPrototype = (ConcretePrototype) concretePrototype.clone();
        System.out.println(clonedPrototype.getField());
    }
}

需要說(shuō)明的是,對(duì)于Java語(yǔ)言來(lái)說(shuō),Object基類已經(jīng)提供了一個(gè)clone的保護(hù)方法,用于實(shí)現(xiàn)對(duì)象的淺復(fù)制。注意,只有實(shí)現(xiàn)了Cloneable接口才可以調(diào)用該方法,
否則拋出CloneNotSupportedException異常。更多clone方法的介紹,可以參考筆者之前的文章。

適用場(chǎng)景

在以下情況下可以考慮使用原型模式:
(1) 如果需要復(fù)制一些對(duì)象,同時(shí)又希望代碼獨(dú)立于這些對(duì)象所屬的具體類,可以使用原型模式。
例如,代碼里需要處理第三方接口傳遞過(guò)來(lái)的對(duì)象時(shí),即使不考慮代碼耦合的情況, 調(diào)用方的代碼也不能依賴這些對(duì)象所屬的具體類,因?yàn)闊o(wú)法知道它們的具體信息。
原型模式,可以為調(diào)用方提供一個(gè)通用接口,調(diào)用方可通過(guò)這一接口與所有實(shí)現(xiàn)了克隆的對(duì)象進(jìn)行交互,它也使得調(diào)用方與其所克隆的對(duì)象具體類獨(dú)立開(kāi)來(lái)。
(2) 如果子類的區(qū)別僅在于其對(duì)象的初始化方式,那么可以使用原型模式來(lái)減少子類的數(shù)量。
在原型模式中, 可以使用一系列預(yù)生成的、各種類型的對(duì)象作為原型(原型對(duì)象池)。客戶端不必根據(jù)需求對(duì)子類進(jìn)行實(shí)例化,只需找到合適的原型并對(duì)其進(jìn)行克隆即可。

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

原型模式有以下優(yōu)點(diǎn):
(1) 將對(duì)象克隆與對(duì)象所屬的具體類分離(解耦),避免克隆對(duì)象與具體類的緊耦合。
(2) 簡(jiǎn)化了復(fù)雜對(duì)象的初始化代碼。對(duì)一些復(fù)雜對(duì)象,可以通過(guò)提供克隆方法來(lái)簡(jiǎn)化調(diào)用方的使用。
(3) 提供了除繼承以外的方式來(lái)實(shí)現(xiàn)復(fù)雜對(duì)象的初始化。繼承建立了子類與父類的強(qiáng)耦合,如果可以,盡量不要使用繼承。
但是原型模式也存在以下缺點(diǎn):
(1) 在重寫(xiě)克隆方法時(shí),對(duì)于復(fù)雜對(duì)象的關(guān)聯(lián)對(duì)象或遞歸依賴等處理相比麻煩一些。

參考

《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 著 李英軍, 馬曉星 等譯
https://www.cnblogs.com/adamjwh/p/9033550.html 簡(jiǎn)說(shuō)設(shè)計(jì)模式——原型模式
https://refactoringguru.cn/design-patterns/prototype 原型模式
https://www.baeldung.com/java-pattern-prototype Prototype Pattern in Java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-621887.html

到了這里,關(guān)于原型模式(Prototype)的文章就介紹完了。如果您還想了解更多內(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 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)
  • 創(chuàng)建型設(shè)計(jì)模式:5、原型模式(Prototype Pattern)

    目錄 1、原型模式的含義 2、C++實(shí)現(xiàn)原型模式的簡(jiǎn)單實(shí)例 1、原型模式的含義 通過(guò)復(fù)制現(xiàn)有對(duì)象來(lái)創(chuàng)建新對(duì)象,而無(wú)需依賴于顯式的構(gòu)造函數(shù)或工廠方法,同時(shí)又能保證性能。 The prototype pattern is a creational design pattern in software development. It is used when the type of objects to create is det

    2024年02月13日
    瀏覽(21)
  • 設(shè)計(jì)模式之原型模式Prototype的C++實(shí)現(xiàn)

    設(shè)計(jì)模式之原型模式Prototype的C++實(shí)現(xiàn)

    1、原型模式提出 在軟件功能設(shè)計(jì)中,經(jīng)常面臨著“某些結(jié)構(gòu)復(fù)雜的對(duì)象”的創(chuàng)建工作,且創(chuàng)建的對(duì)象想擁有其他對(duì)象在某一刻的狀態(tài),則可以使用原型模型。原型模型是通過(guò)拷貝構(gòu)造函數(shù)來(lái)創(chuàng)建對(duì)象,并且該對(duì)象擁有其他對(duì)象在某一刻的狀態(tài)。 2、需求描述 設(shè)計(jì)產(chǎn)品A,B,這

    2024年02月12日
    瀏覽(21)
  • 《golang設(shè)計(jì)模式》第一部分·創(chuàng)建型模式-02-原型模式(Prototype)

    《golang設(shè)計(jì)模式》第一部分·創(chuàng)建型模式-02-原型模式(Prototype)

    用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象 Prototype(抽象原型類):它是聲明克隆方法的接口,或所有具體原型類的公共父類 它可以是抽象類也可以是接口,甚至還可以是具體實(shí)現(xiàn)類。 ConcretePrototype(具體原型類):它實(shí)現(xiàn)在抽象原型類中聲明的

    2024年02月14日
    瀏覽(27)
  • JAVA設(shè)計(jì)模式----原型設(shè)計(jì)模式

    JAVA設(shè)計(jì)模式----原型設(shè)計(jì)模式

    定義 :用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象。 類型 :創(chuàng)建類模式 類圖 : 原型模式主要用于對(duì)象的復(fù)制,它的核心是就是類圖中的原型類Prototype。Prototype類需要具備以下兩個(gè)條件: 實(shí)現(xiàn)Cloneable接口。在java語(yǔ)言有一個(gè)Cloneable接口,它的作用只

    2024年02月13日
    瀏覽(27)
  • Java設(shè)計(jì)模式-原型模式

    原型模式是一種創(chuàng)建型設(shè)計(jì)模式,它允許在運(yùn)行時(shí)通過(guò)復(fù)制現(xiàn)有對(duì)象來(lái)創(chuàng)建新對(duì)象,而不是通過(guò)構(gòu)造函數(shù)創(chuàng)建。這個(gè)模式的核心思想是基于一個(gè)現(xiàn)有的對(duì)象克隆一個(gè)新的對(duì)象,這個(gè)過(guò)程對(duì)外部世界是透明的,就像對(duì)象從未被克隆過(guò)一樣。 原型模式的一個(gè)關(guān)鍵優(yōu)點(diǎn)是可以避免在

    2024年02月03日
    瀏覽(28)
  • Java設(shè)計(jì)模式之原型模式

    ????????原型模式(Prototype Pattern)是用于創(chuàng)建重復(fù)的對(duì)象,同時(shí)又能保證性能。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式之一。 ????????這種模式是實(shí)現(xiàn)了一個(gè)原型接口,該接口用于創(chuàng)建當(dāng)前對(duì)象的克隆。當(dāng)直接創(chuàng)建對(duì)象的代價(jià)比較大

    2024年02月10日
    瀏覽(46)
  • Java設(shè)計(jì)模式之 - 原型模式

    原型模式是一種創(chuàng)建型設(shè)計(jì)模式,它允許我們通過(guò)克隆現(xiàn)有對(duì)象來(lái)創(chuàng)建新對(duì)象,而無(wú)需從頭開(kāi)始構(gòu)建對(duì)象。 在該模式中,一個(gè)原型對(duì)象被克隆來(lái)生成新的對(duì)象,新對(duì)象的屬性可以根據(jù)原型對(duì)象來(lái)設(shè)置,也可以進(jìn)行修改。 原型模式主要解決的問(wèn)題是對(duì)象的創(chuàng)建成本過(guò)高或者對(duì)

    2024年02月16日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包