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

重溫設(shè)計模式 --- 原型模式

這篇具有很好參考價值的文章主要介紹了重溫設(shè)計模式 --- 原型模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

引言

原型模式是一種創(chuàng)建型設(shè)計模式,它允許我們創(chuàng)建一個對象的副本,而不需要顯式地使用構(gòu)造函數(shù)來創(chuàng)建一個新的對象。這種模式通常用于創(chuàng)建那些具有復(fù)雜創(chuàng)建過程或需要大量資源的對象。

在原型模式中,我們首先定義一個原型接口,該接口包含一個克隆方法。然后我們創(chuàng)建一個原型對象,該對象實現(xiàn)了原型接口并提供了自己的克隆方法。最后,我們可以使用原型對象的克隆方法來創(chuàng)建新的對象,而無需重新實例化原型對象。

IClone接口

需要定義一個IClone接口。這個類中應(yīng)該包含一個 Clone 方法,用于克隆自身。

public interface IClone<T> where T : class
{
    public T Clone();
}

原型類

定義一個具體原型類,它實現(xiàn)IClone接口,并實現(xiàn)了Clone方法

public class ConcretePrototype : IClone<ConcretePrototype>
{
    private string _name;

    public ConcretePrototype(string name)
    {
        _name = name;
    }

    public ConcretePrototype Clone()
    {
        return (ConcretePrototype)this.MemberwiseClone();
    }

    public void SetName(string name)
    {
        _name = name;
    }

    public void PrintName()
    {
        Console.WriteLine($"Name: {_name}");
    }
}

在具體原型類中,我們實現(xiàn)了 Clone 方法,并使用了 MemberwiseClone 方法來復(fù)制對象。此外,我們還添加了一個 SetName 方法和一個 PrintName 方法,用于演示對象的復(fù)制和修改。

:::tip{title="提示"}

  1. 使用 Clone 方法來復(fù)制對象。需要注意的是,在復(fù)制對象時,我們需要使用 MemberwiseClone 方法或其他深拷貝方法來復(fù)制對象本身,而不是復(fù)制它的引用。此外,如果需要復(fù)制對象的引用類型成員,我們需要在具體原型類中對它們進(jìn)行深拷貝
  2. 原型模式是在內(nèi)存二進(jìn)制流的拷貝,要比直接new一個對象性能好很多,特別是要在一個循環(huán)體內(nèi)產(chǎn)生大量的對象時,原型模式可以更好地體現(xiàn)其優(yōu)點。
  3. 執(zhí)行Clone方法復(fù)制對象時,不執(zhí)行其構(gòu)造函數(shù)。
    :::

接下來,我們可以使用具體原型類來創(chuàng)建新的對象。具體地說,我們可以先創(chuàng)建一個原型對象,然后調(diào)用它的 Clone 方法來復(fù)制它,并修改復(fù)制出的對象的狀態(tài)。

ConcretePrototype prototype = new ConcretePrototype("prototype");

ConcretePrototype clone = (ConcretePrototype)prototype.Clone();

prototype.PrintName(); // Name: prototype

clone.PrintName(); // Name: prototype

clone.SetName("clone");

prototype.PrintName(); // Name: prototype

clone.PrintName(); // Name: clone

在這段代碼中,我們首先創(chuàng)建了一個名為 prototype 的具體原型對象,并輸出它的名字。然后,我們調(diào)用了 prototypeClone 方法來復(fù)制它,并將結(jié)果保存在名為 clone 的變量中。接著,我們修改了 clone 的名字為 "clone",并分別輸出 prototypeclone 的名字,以證明它們是不同的對象。

總結(jié)

原型模式適用于以下情況:文章來源地址http://www.zghlxwxcb.cn/news/detail-541867.html

  • 當(dāng)需要創(chuàng)建的對象的類型由程序在運行時確定時,原型模式比工廠模式更加靈活。
  • 當(dāng)需要創(chuàng)建的對象的創(chuàng)建過程較為復(fù)雜,或者需要初始化較長時間時,原型模式可以避免重復(fù)創(chuàng)建對象的開銷。
  • 當(dāng)需要創(chuàng)建的對象與其它對象具有相似的屬性和方法時,原型模式可以避免重復(fù)編寫相同的代碼。

到了這里,關(guān)于重溫設(shè)計模式 --- 原型模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 重溫設(shè)計模式 --- 觀察者模式

    觀察者模式 是一種行為型設(shè)計模式,它允許對象之間建立一種一對多的關(guān)系,使得當(dāng)一個對象狀態(tài)改變時,所有依賴它的對象都能夠自動得到通知并更新自己的狀態(tài)。該模式可以幫助我們實現(xiàn)松耦合的系統(tǒng),以便更好地應(yīng)對變化和擴(kuò)展。 在觀察者模式中,有兩個角色: 觀察

    2024年02月13日
    瀏覽(22)
  • 重溫設(shè)計模式系列 --- 完整精華篇

    軟件開發(fā)過程中,我們經(jīng)常會遇到各種設(shè)計問題,例如如何管理對象之間的關(guān)系、如何優(yōu)化代碼的可復(fù)用性和可維護(hù)性等等。為了解決這些問題,我們可以使用設(shè)計模式。 設(shè)計模式是一種被廣泛接受的軟件設(shè)計思想,它提供了一套通用的解決方案,可以幫助我們更好地解決常

    2024年02月13日
    瀏覽(49)
  • 二十三種設(shè)計模式全面解析-原型模式進(jìn)階之原型管理器:集中管理對象原型的設(shè)計模式之道

    在軟件開發(fā)中,我們經(jīng)常需要創(chuàng)建和復(fù)制對象。然而,有時候直接創(chuàng)建對象可能會導(dǎo)致性能下降或代碼重復(fù)。為了解決這些問題,原型模式應(yīng)運而生。而使用原型管理器(Prototype Manager)來集中管理原型對象可以進(jìn)一步提高靈活性和可維護(hù)性。本文將詳細(xì)介紹原型管理器的用

    2024年02月07日
    瀏覽(23)
  • JAVA設(shè)計模式----原型設(shè)計模式

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

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

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

    ? ? ? ? 原型模式就是有時我們需要多個類的實例,但是一個個創(chuàng)建,然后初始化,這樣太麻煩了,此時可以使用克隆,來創(chuàng)建出克隆對象,就能大大的提高效率。具體就是要讓此類實現(xiàn)Cloneable接口,然后重寫Object類中的clone()方法。 ? ? ? ? 具體實現(xiàn)就是克隆了,前面都有

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

    設(shè)計模式-原型模式

    目錄 一、傳統(tǒng)方式 二、原型模式 ?三、淺拷貝和深拷貝 克隆羊問題: 現(xiàn)在有一只羊tom,姓名為: tom,年齡為: 1,顏色為: 白色,請編寫程序創(chuàng)建和tom羊?qū)傩酝耆嗤?0只羊。 傳統(tǒng)的方式的優(yōu)缺點: 簡單易操作。優(yōu)點是比較好理解。 在創(chuàng)建新的對象時,總是需要重新獲取原

    2024年02月16日
    瀏覽(23)
  • 設(shè)計模式(6)原型模式

    設(shè)計模式(6)原型模式

    一、介紹 Java中自帶的原型模式是clone()方法。該方法是Object的方法,native類型。他的作用就是將對象的在內(nèi)存的那一塊內(nèi)存數(shù)據(jù)一字不差地再復(fù)制一個。我們寫簡單類的時候只需要實現(xiàn)Cloneable接口,然后調(diào)用Object::clone方法就可實現(xiàn)克隆功能。這樣實現(xiàn)的方式是淺拷貝。 ?1、

    2024年02月12日
    瀏覽(24)
  • 設(shè)計模式5:原型模式

    Prototype Pattern 如果對象的創(chuàng)建成本比較大,可以基于已有的原型對象通過來創(chuàng)建新的對象,節(jié)省創(chuàng)建時間。 設(shè)計模式之原型模式 實現(xiàn)Cloneable接口的方式。這里就不展開分析淺克隆和深克隆了,后面再專門分析淺克隆和深克隆,不影響對原型模式的理解。 用序列化實現(xiàn)創(chuàng)建對

    2024年02月11日
    瀏覽(22)
  • 設(shè)計模式 - 原型模式

    傳統(tǒng)方式 優(yōu)點: 比較好理解,簡單易操作 缺點: 在創(chuàng)建新的對象時,總是需要重新獲取原始對象的屬性,如果創(chuàng)建的對象比較復(fù)雜 時,效率較低 總是需要重新初始化對象,而不是動態(tài)地獲得對象運行時的狀態(tài), 不夠靈活 原型模式 基本介紹: 原型模式(Prototype模式)是指:用原型

    2024年02月06日
    瀏覽(25)
  • 【設(shè)計模式】原型模式

    【設(shè)計模式】原型模式

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

    2024年02月13日
    瀏覽(17)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包