本篇內(nèi)容介紹了“單例模式之怎么實現(xiàn)我的機(jī)器人女友”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司專注于浦城企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),成都做商城網(wǎng)站。浦城網(wǎng)站建設(shè)公司,為浦城等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
public class GirlFriend {
private String name;
public GirlFriend(String name) {
this.name = name;
System.out.println("機(jī)器人女友制作完成");
}
public void smile() {
System.out.println("笑一個 :-)");
}
public void housework() {
System.out.println("去干家務(wù)");
}
public void buKeMiaoShu() {
System.out.println(".......");
}
}
public static void main(String[] args) {
GirlFriend girlFriend = new GirlFriend("小麗");
girlFriend.smile();
girlFriend.housework();
girlFriend.buKeMiaoShu();
}
機(jī)器人女友制作完成
笑一個 :-)
去干家務(wù)
.......
public class GirlFriend {
private static GirlFriend girlFriend;
private String name;
private GirlFriend(String name) {
this.name = name;
System.out.println("機(jī)器人女友制作完成");
}
/**
* 對象通過getInstance方法獲取
* @param name
* @return
*/
public static GirlFriend getInstance(String name) {
if(girlFriend == null) {
girlFriend = new GirlFriend(name);
}
return girlFriend;
}
public void smile() {
System.out.println("笑一個 :-)");
}
public void housework() {
System.out.println("去干家務(wù)");
}
public void buKeMiaoShu() {
System.out.println(".......");
}
}
public static void main(String[] args) {
GirlFriend girlFriend = GirlFriend.getInstance("小麗");
girlFriend.smile();
girlFriend.housework();
girlFriend.buKeMiaoShu();
}
public static void main(String[] args){
for(int i = 0; i < 5; i++) {
new Thread(new Runnable() {
@Override
public void run() {
GirlFriend girlFriend = GirlFriend.getInstance("小麗");
System.out.println(girlFriend);
}
}).start();
}
}
機(jī)器人女友制作完成
singleton.singleton.GirlFriend@95458f7
機(jī)器人女友制作完成
機(jī)器人女友制作完成
singleton.singleton.GirlFriend@d9d8ad0
singleton.singleton.GirlFriend@383a0ba
singleton.singleton.GirlFriend@d9d8ad0
singleton.singleton.GirlFriend@d9d8ad0
/**
* 對象通過getInstance方法獲取
* @param name
* @return
*/
public synchronized static GirlFriend getInstance(String name) {
if(girlFriend == null) {
girlFriend = new GirlFriend(name);
}
return girlFriend;
}
public class GirlFriend {
// 在類加載的時候就創(chuàng)建對象,是線程安全的
private static GirlFriend girlFriend = new GirlFriend("小麗");
private String name;
private GirlFriend(String name) {
this.name = name;
System.out.println("機(jī)器人女友制作完成");
}
/**
* 對象通過getInstance方法獲取
* @return
*/
public static GirlFriend getInstance() {
return girlFriend;
}
public void smile() {
System.out.println("笑一個 :-)");
}
public void housework() {
System.out.println("去干家務(wù)");
}
public void buKeMiaoShu() {
System.out.println(".......");
}
}
不支持延遲加載(在真正用到對象的時候,再創(chuàng)建實例),在類加載的時候?qū)ο缶蛣?chuàng)建好了,如果對象在整個程序中一次都用不到,提前創(chuàng)建就浪費(fèi)了。
不能控制對象的數(shù)量,我們完全可以聲明多個對象,比如:GirlFriend girlFriend1;GirlFriend girlFriend2;GirlFriend girlFriend3。
我們可能沒有足夠的信息在靜態(tài)初始化時,實例化每一個對象,對象的構(gòu)造方法參數(shù),可能要依賴程序后面的運(yùn)算結(jié)果。
public class GirlFriend {
// volatile關(guān)鍵字保證了每個線程看到的girlFriend對象都是最新的
private volatile static GirlFriend girlFriend;
private String name;
private GirlFriend(String name) {
this.name = name;
System.out.println("機(jī)器人女友制作完成");
}
/**
* 對象通過getInstance方法獲取
* @param name
* @return
*/
public static GirlFriend getInstance(String name) {
if(girlFriend == null) {
synchronized (GirlFriend.class) {
if (girlFriend == null) {
girlFriend = new GirlFriend(name);
}
}
}
return girlFriend;
}
public void smile() {
System.out.println("笑一個 :-)");
}
public void housework() {
System.out.println("去干家務(wù)");
}
public void buKeMiaoShu() {
System.out.println(".......");
}
}
某個類只能有一個實例
它必須自行創(chuàng)建這個實例
它必須自行向整個系統(tǒng)提供這個實例
“單例模式之怎么實現(xiàn)我的機(jī)器人女友”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
網(wǎng)頁標(biāo)題:單例模式之怎么實現(xiàn)我的機(jī)器人女友
轉(zhuǎn)載來于:http://redsoil1982.com.cn/article14/ijhoge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、軟件開發(fā)、品牌網(wǎng)站制作、網(wǎng)站維護(hù)、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)