对三层架构的简单改进
生活随笔
收集整理的這篇文章主要介紹了
对三层架构的简单改进
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
三層架構(gòu)是很常見(jiàn)的架構(gòu)方式,被很多公司所使用,特別是asp.net。優(yōu)點(diǎn)是使用簡(jiǎn)單,缺點(diǎn)是BLL層與DAL層經(jīng)常會(huì)很多重復(fù)。
今天不是要討論它的優(yōu)缺點(diǎn),而是討論使用它時(shí)存在的問(wèn)題。 我們?cè)谑褂眠^(guò)程中,BLL層一般不會(huì)用來(lái)存儲(chǔ)持久化的變量,而且BLL經(jīng)常被這樣使用的: SomeBLL bll=new SomeBLL( );bll.doSomething( ); 圖1:DAL,BLL和Page的關(guān)系 這就有個(gè)問(wèn)題,如果有十個(gè)頁(yè)面需要訪問(wèn)這個(gè)類,那么就需要?jiǎng)?chuàng)建十次這個(gè)變量。如果同時(shí)有一千人在訪問(wèn),那可能是一萬(wàn)個(gè)BLL對(duì)象。還有,每個(gè)BLL對(duì)象,還要new一個(gè)DAL對(duì)象…… 當(dāng)然,.net也不見(jiàn)得會(huì)這么傻,畢竟還有共用,垃圾回收機(jī)制等等。可是,我們真的有必要這么做嗎? 由于BLL對(duì)象一般不是用來(lái)儲(chǔ)存持久化變量,里面只有一些邏輯方法,那么我們是否可以只創(chuàng)建一次BLL對(duì)象,而且是所有瀏覽的用戶都使用同一個(gè)對(duì)象呢? 當(dāng)然是可以的,什么單例模式,什么工廠模式……今天,我們學(xué)一下 ?DataRow,也來(lái)使用一個(gè)自己的方式。 ? 圖2:改進(jìn)的設(shè)計(jì) 我們使用BLLCreator來(lái)創(chuàng)建唯一的一個(gè)靜態(tài)的SomeBLL。 public class BLLCreator{private static SomeBLL _someBll;public static SomeBLL CreateSomeBLL( ){if(_someBll == null){_someBll = new SomeBLL( );}return _someBll;}}public class SomeBLL(){private SomeDAL someDal = new SomeDAL( );protected internal SomeBLL(){// todo something init here }public void doSomething(){}}public class Page1:WebPage{SomeBLL someBll = BLLCreator.CreateSomeBLL( );someBll.doSomething( );}? ??搞定。以后無(wú)論多少人訪問(wèn),永遠(yuǎn)是一個(gè)對(duì)象。當(dāng)然,如果想用泛型什么的,自由發(fā)揮了。
?
轉(zhuǎn)載于:https://www.cnblogs.com/fyan888/p/sancengbug.html
總結(jié)
以上是生活随笔為你收集整理的对三层架构的简单改进的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: node-webkit中使用sqlite
- 下一篇: 学习是一个漫长不能松懈的过程