表現邏輯和業務邏輯的分離是老話題了,近日恰好遇到此相關問題,便把自己心得拿來塗鴉.
表現邏輯和業務邏輯的具體定義不再敘述,我各舉乙個例子,畢竟具體的例子更容易讓人明白.比如,web頁面上要顯示新聞的列表,要求奇數行顯示為紅色,偶數行顯示為白色,這樣的就是表現邏輯;再看這樣的需求:web頁面上列出使用者的頭像和使用者名稱,頭像和使用者名稱都有超連線,連線到使用者的個人主頁,連線位址是或者也就是如果使用者有使用者名稱,則用使用者名為位址,否則就用其id為位址.這樣的邏輯可以算業務邏輯.其實有時候業務邏輯和表現邏輯是很難明確區分的,更多的時候需要經驗.
認清了業務邏輯和表現邏輯,我們就要使她們分離.要做到分離,就要在檢視層只寫表現邏輯,而把業務邏輯放到業務層**裡去實現.對於上面例子中的需求2有兩種方法來實現,一種是不分離的,一種是分離的,如下(我就用veloctiy的語法寫吧):
假設resultlist裡是使用者物件tuser,裡面有name 和id等屬性.
第一種(沒分離的):
[code]
#foreach($result in $resultlist)
#if($result.name != '')
$!result.name
#else
$!result.id
#end
#end
[/code]
第二種(分離的):
先在tuser中寫個方法,叫getlink(),**如下:
[code]
public string getlink()
else
}[/code]
再看web頁面的實現:
[code]
#foreach($result in $resultlist)
$!result.name
#end
[/code]
顯然第2種方法簡化了頁面的邏輯,到這裡,這篇文章該畫句號了,希望對初學者有所幫助,這種膚淺的文章我還是發到入門討論裡好了.
老生常談 與equals的區別
最近在研究string,看到面試題有一題是 與equals的區別的題目。關於 與equals的區別相信大家很熟悉了,包括我也看到也是腦中一閃而過,比較的是位址,equals比較的是內容。真是這樣嗎?或者說能具體或深入的解釋下嗎?如果被面試官這樣問,會如何作答呢?由於最近看了string和object...
CSS布局 Float布局過程與老生常談的三欄布局
使用css布局網頁,那是前端的基本功了,什麼兩欄布局,三欄布局,那也是前端面試的基本題了。一般來說,可以使用cssposition屬性進行布局,或者使用cssfloat屬性布局。前者適合布局首頁,因為首頁上的內容往往可以完全控制。後者適合布局模板,模板中填充的內容你沒法控制 比如,在編輯wordpr...
C 老生常談的 值型別與引用型別
說起值型別和引用型別,大家都知道這麼個事,很多時候我們會拿string做值型別來做比較,但實際上string雖然是值型別,卻表現的有點特別 看下面的乙個例子 話說string是引用型別,所以str1和str2都指向同一塊記憶體位址,當修改了str1的值,按理str2取值時也會受到影響!但實際上我們會...