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