色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

.NET設(shè)計(jì)模式:原型模式(Prototype Pattern)

  概述

  在軟件系統(tǒng)中,有時候面臨的產(chǎn)品類是動態(tài)變化的,而且這個產(chǎn)品類具有一定的等級結(jié)構(gòu)。這時如果用工廠模式,則與產(chǎn)品類等級結(jié)構(gòu)平行的工廠方法類也要隨著這種變化而變化,顯然不大合適。那么如何封裝這種動態(tài)的變化?從而使依賴于這些易變對象的客戶程序不隨著產(chǎn)品類變化?

  意圖

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

  結(jié)構(gòu)圖

Prototype模式結(jié)構(gòu)圖

  生活中的例子

  Prototype模式使用原型實(shí)例指定創(chuàng)建對象的種類。新產(chǎn)品的原型通常是先于全部產(chǎn)品建立的,這樣的原型是被動的,并不參與復(fù)制它自己。一個細(xì)胞的有絲分裂,產(chǎn)生兩個同樣的細(xì)胞,是一個扮演主動角色復(fù)制自己原型的例子,這演示了原型模式。一個細(xì)胞分裂,產(chǎn)生兩個同樣基因型的細(xì)胞。換句話說,細(xì)胞克隆了自己。

使用細(xì)胞分裂例子的Prototype模式對象圖

  原型模式解說

  我們考慮這樣一個場景,假定我們要開發(fā)一個調(diào)色板,用戶單擊調(diào)色板上任一個方塊,將會返回一個對應(yīng)的顏色的實(shí)例,下面我們看看如何通過原型模式來達(dá)到系統(tǒng)動態(tài)加載具體產(chǎn)品的目的。

  很自然,我們利用OO的思想,把每一種顏色作為一個對象,并為他們抽象出一個公用的父類,如下圖:

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

public abstract class Color
{
public abstract void Display();
}
public class RedColor:Color
{
public override void Display()
{
Console.WriteLine(
"Red's RGB Values are:255,0,0");
}
}
public class GreenColor:Color
{
public override void Display()
{
Console.WriteLine(
"Green's RGB Values are:0,255,0");
}
}

NET技術(shù).NET設(shè)計(jì)模式:原型模式(Prototype Pattern),轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 甘泉县| 黄石市| 伊宁市| 九龙县| 巫溪县| 华亭县| 南皮县| 陈巴尔虎旗| 金溪县| 平乡县| 松江区| 荃湾区| 新民市| 邯郸市| 温州市| 万宁市| 碌曲县| 额济纳旗| 靖西县| 铁岭县| 资溪县| 安丘市| 祥云县| 崇礼县| 濮阳市| 房山区| 昆明市| 利川市| 土默特左旗| 湖州市| 海安县| 五家渠市| 黄山市| 翁牛特旗| 庆安县| 翁牛特旗| 乌什县| 宁陵县| 读书| 团风县| 庆安县|