專案開發 讓設計模式成為一種心智

2021-09-05 20:40:31 字數 2195 閱讀 5742

專案開發-讓設計模式成為一種心智-深入理解三層架構

前言:在開發的時候我們常常討論有關設計模式方面的東西,也學習了不少設計模式,而且也可以寫出設計模式的一些演示的**,但是在真正開發的時候,有時卻顯得很無能為力,而且覺得用不用都差不多,就算是勉強的用了,也不見得把**改善了多少。

用不用設計模式,很多時候不是我們說了算的,因為很多的設計,在我們上面的一些人員就已經敲定了的,程式設計師一般都只是開發乙個小小的模組而已,但是即便如此,在我們有限的範圍內,我們還是可以有一些發揮的!下面我們就來談談一些開發方面的東西!下面來看看從分層到模式的的自然的過渡!

首先看看資料訪問層。

資料訪問層(data access layer,後面簡稱dal),一般是對資料庫執行查詢,更新,插入和刪除操作的**,是最接近資料庫的**,它必須了解資料庫的所有的細節,如表結構,欄位名稱,儲存過程等。在以前我們開發的小小的程式中,經常的做法就是雙擊按鈕進入事件,開始寫資料操作**,當然這樣的程式大家現在不會寫了,原因很簡單,最直觀的的原因就是以後**不好改,到處找sql的鏈結操作語句等。說的專業一點就是資料層和業務層,ui層雜糅在一起,職責不清。所以我們就要分開這些,所以就開始有分層的思想了,但是怎麼分,可能我們剛開始不是很清楚,也知道設計模式可以解決,但是如果我們立馬向設計模式奔,有點唐突:思想可能還沒有那麼快的過渡。但是,起碼我們知道:分,肯定是有好處的。

下面就看看「分」的好處:

1.開發使用者介面的人很開發資料訪問**的很多的時候不是同乙個人。使用者介面開發人員可以忽略與資料庫相關的大部分的內容,但是他還是能夠為資料庫提供使用者介面的,因為他起碼知道最後資料在介面的表現的效果的。

2.一些獲取資料的查詢語句會被不通的頁面使用,如果直接放入,如aspx頁面中,以後的修改可想而知,如果把這些資料操作的**放到乙個地方,如乙個專門的資料操作模組中,別的優點先不說,起碼以後改起來方面。

3.將資料操作**硬編碼在頁面中,以後移植新的資料庫,如從sql server 到db2,不方便。

下面看看過渡的思路。

現在我們起碼知道已經把資料操作**放到單獨的地方。但是需求多變,**也要應對變化,所以,對於資料操作**而言,要考慮一下以後的資料庫的更改。初步的思維就是判斷:把現有的資料庫的訪問**都寫乙份,然後用if---else,沒有錯,只是很累,開發起碼難度也不好說。萬一客戶說他不喜歡資料庫,而是喜歡用別的資料儲存方式儲存資料,如xml,以前的**的if---else中要加一段了。我們都不樂意。

要尋求別的方法了,大家知道繼承可以來抵禦變化,那麼就開發乙個抽象類,使得我們現在的程式呼叫這個抽象類,真正做事的是他的子類。把我們的程式比成乙個人,他要吃東西,一會吃這,一會吃那,煩!我們就把餐票給他,先哄著他,等真正吃的時候,就用餐票換吃的。

上面我們談的是給抽象類,其實介面也行,但是我們的資料操作很多都有一定的共性的,就是可以重用一些**的,那麼我們就抽象類最好了。

那麼我們的設計就如下圖了:

現在的**設計就好了一點。其實這就是在實現一種設計模式,一般說是策略模式,微軟中也稱provider提供程式模型設計模式(如membership等就是這樣的)。

現在我們的**起碼可以訪問很多的資料庫了,但是還是有問題:我們從頁面接受的資料要驗證,要經過一定的處理(專業的說法就是業務邏輯處理過程)才能放入資料庫。現在我們可以把也寫驗證等**寫到dal中,或者也不寫在dal,**需要就**寫。如果是前者,在dal中確實是可以放入一些驗證等**,如果全部放,但是這樣豈不又和之前的那種**一樣啦!如果是選擇後一種,問題很前面的一樣了:到處放置,修改起碼到處跑!所以,我們有要用乙個專門的類或者模組來封裝業務處理!這樣三層結構就出現了。一種自然的思考,模式的自然使用。

現在結構如下:

現在改分離的是分離了,但是似乎bbl層和dal合作還是有點問題!確實!

因為我們一般都是看到的下面的三層結構圖:

不急,因為我們說了:模式到架構的自然過渡,現在還沒有到那一步,因為要真正的把上面的圖用我們自然的理解來完成,也就是說,不是硬是用架構來套,框,然後我們就給告訴自己:哦,那就是三層架構,其實這理解是不夠的。等到我們談論下乙個話題:dataset和自定義實體就可以了!

謝謝大家!

讓部落格成為一種習慣

最近一直變得比較懶。寫程式 寫文件 寫方案 所以一直沒有更新部落格,理由非常充分!我也經常勸朋友說 多寫寫吧,可以練練手呢!搞笑的是,自己卻有那麼多科學的藉口,因此,這麼久一直沒在部落格敲上幾個字,我有時候有點疑惑,曾經那種激情在哪兒去了呢?一段時間沒寫,手也遲鈍了,肚子裡面也沒貨了,想寫的時候,卻...

讓微笑成為一種習慣

微笑是世界上最美麗的表情,是世界上最動聽的語言。古希臘哲學家蘇格拉底說過 在這個世界上,除了陽光 空氣 水和笑容,我們還需要什麼呢?微笑於我們,就象是陽光 空氣和水一樣重要。給成功者乙個微笑,那是讚賞 給失敗者乙個微笑,那是鼓勵 給快樂者乙個微笑,那是分享 給悲傷者乙個微笑,那是安慰。微笑是黑夜裡的...

讓優秀成為一種習慣

研究生畢業已經整整半年,回想自己之前的生活除了拿到看來光鮮的文憑之外,貌似沒有什麼值得自己驕傲和自豪的事!現在狀態還是在等待那個期待了很久的工作機會,但是等待又是最消極的行動,所以我要重新的認識自己,塑造自己的思想和行動,讓優秀成為一種習慣!其實,想想自己馬上而立還沒有多大成就的原因就是,自己沒有找...