天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

  一、上篇回顧

  上篇創(chuàng)建者模式中,我們主要講述了創(chuàng)建者的幾類實(shí)現(xiàn)方案,和創(chuàng)建者模式的應(yīng)用的場景和特點(diǎn),創(chuàng)建者模式適合創(chuàng)建復(fù)雜的對象,并且這些對象的每個組成部分的詳細(xì)創(chuàng)建步驟可以是動態(tài)的變化的,但是每個對象的組裝的過程來說可能是相對固定的或者說是對象的創(chuàng)建的過程是固定的,那么通過創(chuàng)建者模式可以很好的解決這類復(fù)雜對象的創(chuàng)建,而在我們的生活中或者是項(xiàng)目中可能會有這個方面的需求,那么使用創(chuàng)建者模式無疑是好的選擇。

  創(chuàng)建者模式中的每個對象組成部分的構(gòu)建都是對象本身提供的內(nèi)部方法,具體的創(chuàng)建者只是調(diào)用要創(chuàng)建的對象的內(nèi)部的相應(yīng)組成部分的構(gòu)建方法,組織這些對象內(nèi)部構(gòu)建方法的執(zhí)行順序,完成對象的完整構(gòu)建。當(dāng)我們的客戶應(yīng)用程序需要調(diào)用這個創(chuàng)建者時,我們只需要通過指導(dǎo)者調(diào)用的形式,提供統(tǒng)一的創(chuàng)建者訪問入口,通過構(gòu)造函數(shù)注入或者配置文件的形式來完成創(chuàng)建者的注入。

  二、摘要

  本文主要是講述創(chuàng)建型模式中一個比較特殊的模式-原型模式,這個模式呢,有個最大的特點(diǎn)是克隆一個現(xiàn)有的對象,這個克隆的結(jié)果有2種,一種是是淺復(fù)制,另一種是深復(fù)制,這里我們也會探討下深復(fù)制和淺復(fù)制的原理,這樣可能更方便大家理解這個原型模式的使用。我們都知道,創(chuàng)建型模式一般是用來創(chuàng)建一個新的對象,然后我們使用這個對象完成一些對象的操作,我們通過原型模式可以快速的創(chuàng)建一個對象而不需要提供專門的new()操作就可以快速完成對象的創(chuàng)建,這無疑是一種非常有效的方式,快速的創(chuàng)建一個新的對象。本文將會從以下幾個方面進(jìn)行講述:

  1、原型模式的使用場景和特點(diǎn)。

  2、淺復(fù)制和深復(fù)制的原理。

  3、舉例說明淺復(fù)制和深復(fù)制。

  4、原型模式的實(shí)現(xiàn)方案。

  5、總結(jié)原型模式。

  我們這里先給出一個原型模式的原理圖:

image  三、本文大綱

  a、上篇回顧。

  b、摘要。

  c、本文大綱。

  d、原型模式的特點(diǎn)及使用場景。

  e、深復(fù)制和淺復(fù)制。

  f、原型模式的實(shí)現(xiàn)方案。

  g、原型模式使用總結(jié)。

  h、系列進(jìn)度。

  i、下篇預(yù)告。

  四、原型模式的特點(diǎn)及使用場景

  原型模式的主要思想是基于現(xiàn)有的對象克隆一個新的對象出來,一般是有對象的內(nèi)部提供克隆的方法,通過該方法返回一個對象的副本,這種創(chuàng)建象的方式,相比我們之前說的幾類創(chuàng)建型模式還是有區(qū)別的,之前的講述的工廠模式與抽象工廠都是通過工廠封裝具體的new操作的過程,返回一個新的對象,有的時候我們通過這樣的創(chuàng)建工廠創(chuàng)建對象不值得,特別是以下的幾個場景的時候,可能使用原型模式更簡單也效率更高。

  1、如果說我們的對象類型不是剛開始就能確定,而是這個類型是在運(yùn)行期確定的話,那么我們通過這個類型的對象克隆出一個新的類型更容易。這個怎么理解。例如我們有的時候在處理DataTable中的記錄進(jìn)行篩選后,放在一個新的DataTable 中,我們知道如果說2個dataTable的架構(gòu)不同,那么必須手動的顯示的賦值,否則無法使用如下方式進(jìn)行導(dǎo)入數(shù)據(jù):

  下面給出測試的相關(guān)代碼和說明:

public class DataTableDemo
{
public void CloNETest()
{
string cmdText = "SELECT * FROM TABLE";
DataTable dt
= new DataTable();
//通過執(zhí)行上面的cmdText 返回一個dataTable對象;

//這時候我們可以如下形式復(fù)制一個新的dataTable,而不用先創(chuàng)建一個dataTable,然后把每一列都顯示的循環(huán)添加到新的 dataTable中,

//這是很大的工作量。
DataTable dt1 = dt.Clone();
//克隆一個新的對象 dt1.

#region 不采用克隆的形式復(fù)制一個新的dataTable
DataTable dt2
= new DataTable();

foreach (DataColumn column in dt.Columns)
{
dt2.Columns.Add(column.ColumnName);
}
#endregion
}
}

it知識庫設(shè)計(jì)模式系列—原型模式,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产二级一片内射视频播放 | 国产精品青草久久福利不卡 | 欧美三级aaa | blacked黑人战小美女 | 久久国产精品福利影集 | 成人国产精品视频频 | 国产精品97久久AV色婷婷 | 俄罗斯19girl video9 | 网红主播 国产精品 开放90后 | 丰满人妻妇伦又伦精品APP国产 | 国产精品人妻无码77777 | 在线观看国产人视频免费中国 | 琪琪电影午夜理论片77网 | 久久免费视频在线观看6 | 中文字幕永久在线观看 | 99精品视频免费观看 | 母乳女神春日もな | 久久亚洲这里只有精品18 | 国产亚洲精品久久久久久禁果TV | 偷窥国产亚洲免费视频 | 亚洲m男在线中文字幕 | 国产99在线视频 | 男人j进女人j一进一出 | 99热这里精品| 超碰97av 在线人人操 | 交换:年轻夫妇-HD中文字幕 | 在线日韩欧美一区二区三区 | 亚洲中文字幕乱码熟女在线 | 欧美成 人 网 站 免费 | 快播欧美大片 | 国产亚洲精品线视频在线 | 古代荡女丫鬟高H辣文纯肉 姑娘视频日本在线播放 | 国产精品单位女同事在线 | 免费精品国偷自产在线 | 原神美女被超污app 御姐被吸奶 | 一本道中文无码亚洲 | 97人妻AV天天澡夜夜爽 | 青青伊人精品 | av天堂影音先锋在线 | 亚洲精品色播一区二区 | 狠狠色狠狠色综合系列 |