MVC編程模式是什么?
哦,天啊,有人說(shuō)是一個(gè)意思。
你所指的三層就是j2ee設(shè)計(jì)中的三層。你很清楚這一點(diǎn),所以我贏了。;別說(shuō)了。
MVC是java設(shè)計(jì)模式中的一個(gè)術(shù)語(yǔ),和三層不是一回事。
MVC:模型、視圖、控制表示如果軟件需要使用UI界面,要分為三層:模型層、表示層、控制層。
原因是模型代表了數(shù)據(jù)的原型,表示層是用來(lái)繪制和表現(xiàn)數(shù)據(jù)的。控件用于操作這些數(shù)據(jù),
用戶(hù)一般在表示層看到界面,用控制層控制界面,最終結(jié)果影響模型層。
MVC模式、工廠模式、單例模式、命令模式等。加在一起有20多種設(shè)計(jì)模式叫做編程語(yǔ)言,是我們平時(shí)編程經(jīng)驗(yàn)的積累。當(dāng)我們?cè)O(shè)計(jì)程序時(shí),我們可以把它們作為設(shè)計(jì)程序框架的參考。
最后再補(bǔ)充一句:MVC的本質(zhì)是顯示的專(zhuān)業(yè)展示,邏輯的專(zhuān)業(yè)邏輯,邏輯和繪圖的分離,不一定是三層,可能會(huì)有更多層。只要能滿(mǎn)足MVC的要求,想有多少層就有多少層。目的是盡可能地解耦程序的模塊。
可能我們說(shuō)的讓你有點(diǎn)困惑,所以強(qiáng)烈建議樓主上一堂20多個(gè)設(shè)計(jì)模式的教程。學(xué)習(xí)設(shè)計(jì)模式將會(huì)從質(zhì)量上提高你的程序水平。真的,學(xué)完java我會(huì)愛(ài)上它的。我曾經(jīng)把學(xué)習(xí)java當(dāng)成一項(xiàng)任務(wù),但是學(xué)了設(shè)計(jì)模式之后就愛(ài)上了它。是啊!
簡(jiǎn)述各種單利模式的寫(xiě)法,以及優(yōu)缺點(diǎn)有哪些?
懶惰型:
發(fā)布類(lèi)單一實(shí)例{
私有靜態(tài)單一實(shí)例實(shí)例新單一實(shí)例()
私有單一實(shí)例(){
}
PublicstaticsynchronizationsingletongetInstance(){
If(emptyinstance)
INSTANCEnewSingleInstance()
}
Returntoinstance
}
}
優(yōu)點(diǎn):同步裝飾保證了多線(xiàn)程情況下單體對(duì)象的唯一性;
缺點(diǎn):每次調(diào)用都會(huì)調(diào)用,浪費(fèi)資源;
餓漢風(fēng)格:
公共類(lèi)單一實(shí)例{
公共靜態(tài)最終單個(gè)實(shí)例實(shí)例新建單個(gè)實(shí)例();
私有SingleInstance(){}
PublicstaticsingletongetInstance(){
Returntoinstance
}
}
優(yōu)點(diǎn):線(xiàn)程安全;
缺點(diǎn):類(lèi)加載時(shí)會(huì)被實(shí)例化,不管用不用都會(huì)生成對(duì)象,占用空間;
雙重鎖定:
公共類(lèi)單一實(shí)例{
Privatestaticvariablesingleinstanceinstance;
私有SingleInstance(){}
PublicstaticsynchronizationgetInstance(){
if(mInstancenull){
Synchronization(){
if(mInstancenull){
MInstanceCreateanewsingleinstance()
}
}
}
Returndistance
}
}
線(xiàn)程是安全的,對(duì)性能幾乎沒(méi)有影響。它是用volatile修飾的,不會(huì)被本地線(xiàn)程緩存。讀寫(xiě)操作都在共享內(nèi)存中完成,保證了多線(xiàn)程可以正確處理這個(gè)變量。
仍然會(huì)有失敗。
靜態(tài)內(nèi)部類(lèi):
公共類(lèi)單一實(shí)例{
PrivatestaticclassInstanceHolder{
返回單一實(shí)例實(shí)例新建單個(gè)實(shí)例();
}
私有SingleInstance(){}
PublicstaticsingletongetInstance(){
return
}
}
對(duì)象第一次加載時(shí)不會(huì)初始化,只有在調(diào)用getInstance方法時(shí)才會(huì)實(shí)例化,保證線(xiàn)程安全,保證簡(jiǎn)單對(duì)象的唯一性,延遲簡(jiǎn)單初始化;
容器單列模式:
公共類(lèi)SingleInstanceManager{
私有靜態(tài)MapltString,objectgtminstancenewHashMapltgt()
私有SingleInstanceManager(){}
PublicstaticvoidsetInstance(stringkey,objectvalue)(
如果(!部長(zhǎng)containsKey(key)){
Minister.Put(key,value)
}
}
PublicstaticobjectgetInstance(stringkey)
Enterkey
}
}
降低耦合度,隱藏具體實(shí)現(xiàn);
以上是一些常見(jiàn)的單柱模式,我們可以根據(jù)項(xiàng)目的需要選擇合適的模式。PS:簡(jiǎn)單盈利模式下上下文容易造成內(nèi)存泄露,最好使用應(yīng)用的上下文;