C#筆記——工廠方法模式結(jié)合委托實(shí)例

定義場景:保存日志功能芬骄,分為:文本形式和數(shù)據(jù)庫形式;

定義日志基類:

///

/// 日志

///

public class LogEntity

{

///

/// 保存

///

public virtual void DoSave() { ?}

///

/// 顯示

///

public virtual void DoShow() { ?}}

擴(kuò)展基類:

///

/// 文本方式日志

///

public class TxtLogEntity : LogEntity

{

public override void DoSave()

{

Console.WriteLine("save to txt");

}

public override void DoShow()

{

Console.WriteLine("show log as txt");

}

}

///

/// 數(shù)據(jù)庫方式日志

///

public class DBLogEntity : LogEntity

{

public override void DoSave()

{

Console.WriteLine("save to db");

}

public override void DoShow()

{

Console.WriteLine("show log as db");

}}

定義日志創(chuàng)建接口:

///

/// 日志創(chuàng)建接口

///

public interface ILogCreator

{

LogEntity CreateLogFactory();}

實(shí)現(xiàn)接口:

public class TxtLogCreator : ILogCreator

{

public LogEntity CreateLogFactory()

{

return new TxtLogEntity();

}

}

public class DBLogCreator : ILogCreator

{

public LogEntity CreateLogFactory()

{

return new DBLogEntity();

}}

利用委托實(shí)現(xiàn)工廠:

///

/// 工廠創(chuàng)建委托

///

///

///

public delegate LogEntity LogEntityCreateFunc(string type);

public static class LogEntityCreateFactory

{

///

/// 創(chuàng)建日志實(shí)體

///

///

///

///

public static LogEntity CreateEntity(string aType, LogEntityCreateFunc createFunc)

{

return createFunc(aType);

}}

客戶端調(diào)用:

static void Main(string[] args)

{

LogEntity log = LogEntityCreateFactory.CreateEntity("txt", MyCreateFunc);

log.DoSave();

log.DoShow();

Console.ReadKey();

}

///

/// 自定義工廠創(chuàng)建方式

///

///

///

static LogEntity MyCreateFunc(string aType)

{

if (aType == "txt")

{

return (new TxtLogCreator()).CreateLogFactory();

}

else if (aType == "db")

{

return (new DBLogCreator()).CreateLogFactory();

}

else

{

return null;

}}

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

1.充分體現(xiàn)了依賴倒置原則,?日志創(chuàng)建接口的設(shè)計泵额,保證了最大的可擴(kuò)展度,即如果日后需要實(shí)現(xiàn)一個基于第三方的日志功能,只需要實(shí)現(xiàn)接口即可庵芭,不需要修改原代碼;

2.利用委托的特性雀监,可以自定義創(chuàng)建規(guī)則双吆,采用十分靈活的注入方式,最大化的解除了業(yè)務(wù)邏輯和代碼的耦合会前。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末好乐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瓦宜,更是在濱河造成了極大的恐慌蔚万,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件临庇,死亡現(xiàn)場離奇詭異反璃,居然都是意外死亡昵慌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門淮蜈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斋攀,“玉大人,你說我怎么就攤上這事梧田〈景” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵裁眯,是天一觀的道長肖方。 經(jīng)常有香客問我,道長未状,這世上最難降的妖魔是什么俯画? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮司草,結(jié)果婚禮上艰垂,老公的妹妹穿的比我還像新娘。我一直安慰自己埋虹,他們只是感情好猜憎,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搔课,像睡著了一般胰柑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上爬泥,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天柬讨,我揣著相機(jī)與錄音,去河邊找鬼袍啡。 笑死踩官,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的境输。 我是一名探鬼主播蔗牡,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嗅剖!你這毒婦竟也來了辩越?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤信粮,失蹤者是張志新(化名)和其女友劉穎黔攒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亏钩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年莲绰,在試婚紗的時候發(fā)現(xiàn)自己被綠了欺旧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姑丑。...
    茶點(diǎn)故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辞友,靈堂內(nèi)的尸體忽然破棺而出栅哀,到底是詐尸還是另有隱情,我是刑警寧澤称龙,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布留拾,位于F島的核電站,受9級特大地震影響鲫尊,放射性物質(zhì)發(fā)生泄漏痴柔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一疫向、第九天 我趴在偏房一處隱蔽的房頂上張望咳蔚。 院中可真熱鬧,春花似錦搔驼、人聲如沸谈火。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糯耍。三九已至,卻和暖如春囊嘉,著一層夾襖步出監(jiān)牢的瞬間温技,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工扭粱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荒揣,地道東北人。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓焊刹,卻偏偏與公主長得像系任,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子虐块,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理俩滥,服務(wù)發(fā)現(xiàn),斷路器贺奠,智...
    卡卡羅2017閱讀 134,695評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法霜旧,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法挂据,異常的語法以清,線程的語...
    子非魚_t_閱讀 31,660評論 18 399
  • 注:只包含標(biāo)準(zhǔn)包中的操作符,用于個人學(xué)習(xí)及備忘參考博客:http://blog.csdn.net/maplejaw...
    小白要超神閱讀 2,199評論 2 8
  • 上中學(xué)時曾學(xué)過一篇古文《馬說》崎逃,大概意思是:世上先有伯樂掷倔,然后才有千里馬。千里馬常有个绍,而伯樂不常有——勒葱。 ...
    中都凡士閱讀 1,113評論 1 1
  • 我的心沉浸在碧湖 幾千個日子前 曾一睹你芳容 如今在鳴笛喇叭聲中 身旁路過的每一位行人 都匆匆有著你的影子 我眼 ...
    高白牧閱讀 301評論 0 3