一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

  一、上篇回顧

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

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

  二、摘要

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

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

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

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

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

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

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

image  三、本文大綱

  a、上篇回顧。

  b、摘要。

  c、本文大綱。

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

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

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

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

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

  i、下篇預(yù)告。

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

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

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

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

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

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

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

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

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

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

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

主站蜘蛛池模板: 亚洲毛片视频 | 久久久久久中文字幕 | 普通话对白国产情侣自啪 | 欧洲精品在线视频 | 黄网免费在线观看 | 色黄视频在线观看 | 国产精品视频一区二区猎奇 | 精品视频在线观看一区二区三区 | 大象蕉国产情侣 | 久久国产精品麻豆映画 | 成人污视频在线观看 | 丁香婷婷成人 | 九一在线观看 | 国产亚洲精品拍拍拍拍拍 | 久久久久综合网 | 一区二区视屏 | 亚洲制服欧美自拍另类 | 一级美女| 欧美成人性色区 | r18在线观看 | 大陆5g天天看天天爽免费 | 国产成人一区二区 | 波多野结衣精品一区二区三区 | 欧美视频www | 黄色在线观看网站 | 亚洲欧美精品 | 国产福利萌白酱喷水视频铁牛 | 韩国三级日本三级美三级 | 亚洲人成一区二区三区 | 国产精品久久久尹人香蕉 | 国产亚洲一级精品久久 | 在线看国产视频 | 美女视频很黄很a免费国产 美女视频黄.免费网址 | 亚洲午夜视频 | 午夜激情福利 | 2022国产91精品久久久久久 | 国产高清一区二区三区四区 | 狠狠色做五月深爱婷婷 | 91精品福利老司机在线观看 | 亚洲一区二区三区中文字幕5566 | 色哟哟在线免费观看 |