|
一、開篇
其實(shí)我本來不是打算把系統(tǒng)架構(gòu)中的一些設(shè)計(jì)模式單獨(dú)抽出來講解的,因?yàn)楹芏嗟暮门笥岩脖容^關(guān)注這方面的內(nèi)容,所以我想通過我理解及平時(shí)項(xiàng)目中應(yīng)用到的一些常見的設(shè)計(jì)模式,拿出來給大家做個(gè)簡(jiǎn)單講解,我這里只是拋磚引玉,如果某個(gè)地方講解的不正確或者不詳細(xì),請(qǐng)大家批評(píng)指出。園子里面的很多的大牛寫的設(shè)計(jì)模式都非常的經(jīng)典,我這里寫可能有點(diǎn)班門弄斧的感覺,不過我還是決定把它寫出來,希望能對(duì)初學(xué)者有一定的幫助和指導(dǎo)的作用。當(dāng)然我這里如果說某個(gè)地方解釋的有問題或者說是某個(gè)地方寫的不符合邏輯之處,還請(qǐng)大家多多指出,提出寶貴意見。
軟件工程中其實(shí)有很多總結(jié)性的話語,比如說軟件=算法+數(shù)據(jù)結(jié)構(gòu)等等這樣的描述,當(dāng)然我們這里可能算法就是泛指一些軟件中的編程方法了,設(shè)計(jì)模式怎么去理解呢?為什么要有設(shè)計(jì)模式?它能帶來什么?等等這些都是我們需要討論的問題。首先我們需要知道設(shè)計(jì)模式能帶來什么。可能這才是我們學(xué)習(xí)它的主要原因,如果說不能為我們?cè)跁鴮戃浖倪^程中帶來更方面的好處,那我們也不會(huì)使用和學(xué)習(xí)它。
設(shè)計(jì)模式是什么?
設(shè)計(jì)模式可以簡(jiǎn)單的理解為解決某一系列問題的完美的解決方案。我們?cè)谲浖_發(fā)的過程中經(jīng)常遇到設(shè)計(jì)功能實(shí)現(xiàn)的問題,而設(shè)計(jì)模式正是為了解決軟件設(shè)計(jì)功能實(shí)現(xiàn)時(shí)遇到的某一類問題的解決方案。因?yàn)橐话闱闆r下來說,我們?cè)谀硞€(gè)軟件功能的開發(fā)過程中遇到的功能設(shè)計(jì)問題,可能是前人很早就遇到過的問題,所以通過這種設(shè)計(jì)模式的方式來解決,能讓我們?cè)谲浖?shí)現(xiàn)的過程中少走彎路,或者說是給我們的軟件設(shè)計(jì)帶來很好的靈活性和適應(yīng)性。
設(shè)計(jì)模式帶來了什么?
設(shè)計(jì)模式是源于實(shí)踐,并且每種設(shè)計(jì)模式都包含了一個(gè)問題描述,問題涉及到的參與者并且提供了一個(gè)實(shí)際的解決方案。設(shè)計(jì)模式的好處我們可以通過下圖來簡(jiǎn)單說明: 當(dāng)然我這里可能總結(jié)還不完全,還請(qǐng)大家補(bǔ)充,我會(huì)更新這里面的內(nèi)容。當(dāng)然設(shè)計(jì)模式帶來了這么多的好處,所以我們學(xué)習(xí)設(shè)計(jì)模式就顯得比較必要了,也是從事軟件開發(fā)及設(shè)計(jì)必須掌握的基本技能之一。
當(dāng)然這里可以簡(jiǎn)單的分為這3大類,下面我們?cè)谥v述的過程中將會(huì)分別講解,當(dāng)然我這里是以創(chuàng)建型模式開始講解,我想創(chuàng)建型模式也是大家項(xiàng)目中必備的吧?下面我就從創(chuàng)建型模式先來講解。
二、摘要
本文將主要講解創(chuàng)建型模式中的單例模式先來講解,因?yàn)閱卫J绞亲詈?jiǎn)單也是最容易理解的設(shè)計(jì)模式,上手快,易使用的設(shè)計(jì)模式。本文將從下面的流程來講解單例模式,后面講述的設(shè)計(jì)模式也將使用這樣的方式。
1、什么是單例模式?
2、單例模式的應(yīng)用場(chǎng)景。
3、舉例說明單例模式的使用。
4、總結(jié)單例模式的用法。
三、本文大綱
a、開篇。
b、摘要。
c、本文大綱。
d、單例模式的簡(jiǎn)介。
e、相關(guān)應(yīng)用場(chǎng)景分析。
f、本文總結(jié)。
g、系列進(jìn)度。
h、下篇預(yù)告。
四、單例模式的簡(jiǎn)介
本章我們將來講述下單例模式的使用,首先我們來看看單例模式的定義:
單例模式:是一種軟件設(shè)計(jì)中常用的設(shè)計(jì)模式,主要是用來控制某個(gè)類必須在某個(gè)應(yīng)用程序中只能有一個(gè)實(shí)例存在。
有時(shí)候我們需要確保整個(gè)系統(tǒng)中只有某個(gè)類的一個(gè)實(shí)例存在,這樣有利于我們協(xié)調(diào)控制系統(tǒng)的行為。例如:我們?cè)谀硞€(gè)系統(tǒng)中使用了發(fā)送短信的這樣的服務(wù),那么我們可能希望通過單一的短信服務(wù)類的實(shí)例,而不是多個(gè)對(duì)象實(shí)例完成短信的發(fā)送服務(wù)。這時(shí)我們可以通過單例模式來完成。
上圖簡(jiǎn)單描述了單例模式應(yīng)用的位置。
下面我們來舉例說明下這2種方式的實(shí)現(xiàn)。
1、外部控制的方式
public class Instance
{
private List<SendMessage> lists = new List<SendMessage>();
private SendMessage sendInstance;
public SendMessage SInstance
{
get
{
return sendInstance;
}
}
public void InstanceMethod()
{
if (lists.Count == 0)
{
sendInstance = new SendMessage();
lists.Add(sendInstance);
}
else
{
sendInstance = lists[0];
}
}
}
it知識(shí)庫:系統(tǒng)架構(gòu)技能之設(shè)計(jì)模式—單件模式,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。