将数据库的操作代码从servlet中剥离,封装到DAO中
工廠設(shè)計(jì)模式是所有設(shè)計(jì)模式中最簡(jiǎn)單的設(shè)計(jì)模式!!!(就是通過(guò)工廠來(lái)創(chuàng)建一些對(duì)象)
工廠模式的典型應(yīng)用場(chǎng)景:創(chuàng)建對(duì)象(當(dāng)我們感覺(jué)到創(chuàng)建對(duì)象是件很痛苦的事,會(huì)用工廠模式)?
工廠模式:簡(jiǎn)單工廠,工廠方法,抽象工廠(要支持創(chuàng)建多個(gè)產(chǎn)品,定義一個(gè)抽象工廠,抽象工廠中有多個(gè)工廠方法,可以創(chuàng)建多個(gè)產(chǎn)品)
工廠方法:
抽象工廠:利用工廠方法實(shí)現(xiàn)抽象工廠
?
為了避免直接在servlet中看到操作數(shù)據(jù)庫(kù)的代碼(直接在servlet中通過(guò)JDBC訪問(wèn)數(shù)據(jù)庫(kù)),并且由于數(shù)據(jù)庫(kù)的不同,操作代碼也不同,譬如分頁(yè)查詢的sql語(yǔ)句,mysql的可以:select?*?from?t_article?where?title?like?'%"+title+"%'?limit??,?,而在oracle中是不可以用limit的。
實(shí)現(xiàn)方法為:創(chuàng)建一個(gè)接口ArticleDao
然后創(chuàng)建兩個(gè)實(shí)現(xiàn)了ArticleDao接口的類:ArticleDaoImpl(具體實(shí)現(xiàn)了操作MySQL數(shù)據(jù)庫(kù)的類)和ArticleDaoImplForOracle(具體實(shí)現(xiàn)了操作Oracle數(shù)據(jù)庫(kù)的類)。
HashMap是線程不安全的對(duì)象,而Hashtable<>是線程安全的對(duì)象。
(public?class?Hashtable<K,V>?
extends?Dictionary<K,V>?
implements?Map<K,V>,?Cloneable,?java.io.Serializable?{}
)
Properties?extends?Hashtable<Object,Object>繼承了Hashtable,它有更強(qiáng)大的功能,Properties?可以直接讀取文件,而且可以將文件中的鍵值對(duì)直接放到Map中來(lái)(Properties就是一個(gè)Map),調(diào)用Properties?的load方法(HashMap、Hashtable中沒(méi)有load方法),能夠?
通常DAO是無(wú)狀態(tài)的。
Servlet不僅僅可以處理來(lái)自客戶端的請(qǐng)求,還可以利用他的init方法來(lái)做些我們想做的初始化工作。
任何一個(gè)請(qǐng)求servlet發(fā)到服務(wù)器端,都會(huì)先調(diào)用servlet中的service()方法,在service方法中根據(jù)請(qǐng)求的Httphead里面攜帶的有關(guān)這個(gè)請(qǐng)求方法的信息,譬如是get或者post方法,然后把這個(gè)請(qǐng)求轉(zhuǎn)發(fā)給doGet()或者doPost(),實(shí)際上任何一個(gè)servlet都有一個(gè)唯一的入口,即service()方法,所以可以在到達(dá)doGet()或者doPost()方法之前,在service()方法中執(zhí)行一些操作。
父類中的this是多態(tài)的,他是具體的子類對(duì)象,而不是父類對(duì)象。
Spring的主體思想就是DI(依賴注入)、IOC
總結(jié)
以上是生活随笔為你收集整理的将数据库的操作代码从servlet中剥离,封装到DAO中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 应用抽象工厂模式自己动手写一个ioc
- 下一篇: 利用抽象工厂创建DAO、利用依赖注入去除