1. 單例設(shè)計模式:★★★★★(必問的)
解決的問題:保證一個類在內(nèi)存中的對象唯一性。
比如:多程序讀取一個配置文件時傲诵,建議配置文件封裝成對象榕暇。會方便操作其中數(shù)據(jù)蛆封,又要保證多個程序讀到的是同一個配置文件對象,就需要該配置文件對象在內(nèi)存中是唯一的碎捺。
Runtime()方法就是單例設(shè)計模式進行設(shè)計的路鹰。
如何保證對象唯一性呢?
思想:
1收厨,不讓其他程序創(chuàng)建該類對象晋柱。
2,在本類中創(chuàng)建一個本類對象诵叁。
3雁竞,對外提供方法,讓其他程序獲取這個對象拧额。
步驟:
1碑诉,因為創(chuàng)建對象都需要構(gòu)造函數(shù)初始化,只要將本類中的構(gòu)造函數(shù)私有化侥锦,其他程序就無法再創(chuàng)建該類對象进栽;
2,就在類中創(chuàng)建一個本類的對象恭垦;
3快毛,定義一個方法,返回該對象署照,讓其他程序可以通過方法就得到本類對象祸泪。(作用:可控)
代碼體現(xiàn):
1,私有化構(gòu)造函數(shù)建芙;
2没隘,創(chuàng)建私有并靜態(tài)的本類對象;
3禁荸,定義公有并靜態(tài)的方法右蒲,返回該對象阀湿。
---------------------------------------------
//餓漢式
class Single{
private Single(){} //私有化構(gòu)造函數(shù)。
private static Single s = new Single(); //創(chuàng)建私有并靜態(tài)的本類對象瑰妄。
public static Single getInstance(){ //定義公有并靜態(tài)的方法陷嘴,返回該對象。
return s;
}
}
---------------------------------------------
//懶漢式:延遲加載方式间坐。
class Single2{
private Single2(){}
private static Single2 s = null;
public static Single2 getInstance(){
if(s==null)
s = new Single2();
return s;
}
}
2. 開發(fā)中都用到了那些設(shè)計模式?
每個模式都描述了一個在我們的環(huán)境中不斷出現(xiàn)的問題灾挨,然后描述了該問題的通用解決方案。通過這種方式竹宋,你可以無數(shù)次地使用那些已有的解決方案劳澄,無需在重復(fù)相同的工作。主要用到了MVC的設(shè)計模式(用來開發(fā)JSP/Servlet或者J2EE的相關(guān)應(yīng)用)蜈七、簡單工廠模式秒拔、單例模式等。
3. 24種設(shè)計模式(gof23+1):
? 創(chuàng)建型模式:
1.簡單工廠模式(不包含在gof23中)
2.工廠模式
3.抽象工廠模式
4.單例模式
5.原型模式 創(chuàng)建者模式
6.結(jié)構(gòu)型模式:
7.組合模式
8.裝飾者模式
9.外觀模式
10.適配器模式
11.代理模式 12.享元模式 13.橋接模式
? 行為型模式: 14.觀察者模式 15.策略模式 16.狀態(tài)模式 17.中介模式 18.模板方法 19.命令模式 20.備忘錄模式 21.訪問者模式 22.解釋器模式 23.迭代器模式 24.職責(zé)鏈模式 這里只是簡單描述了定義和特征以及設(shè)計模式的關(guān)系飒硅,具體細(xì)節(jié)不討論砂缩。
4. 什么是負(fù)載均衡
負(fù)載均衡是由多臺服務(wù)器以對稱的方式組成一個服務(wù)器集合,每臺服務(wù)器都具有等價的地位三娩,都可以單獨對外供應(yīng)效力而無須其他服務(wù)器的輔助庵芭。經(jīng)過某種負(fù)載分管技術(shù),將外部發(fā)送來的央求均勻分配到對稱結(jié)構(gòu)中的某一臺服務(wù)器上尽棕,而接收到央求的服務(wù)器獨登時回應(yīng)客戶的央求喳挑。均衡負(fù)載可以平均分配客戶央求到服務(wù)器列陣,籍此供應(yīng)快速獲取重要數(shù)據(jù)滔悉,解決很多并發(fā)訪問效力問題伊诵。這種群集技術(shù)可以用最少的出資取得接近于大型主機的性能。