亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

單例模式-----

系統(tǒng) 2188 0

??? ?大家好,我是ant,今天是我開始創(chuàng)作《ant求職記之設(shè)計(jì)模式》的第一天,作為一名剛踏出象牙塔的應(yīng)屆畢業(yè)生,跟很多人一樣,在經(jīng)歷著人生的一個(gè)特殊歷程:求職。這對(duì)我們每個(gè)人說都是十分重要的。而求職的艱辛或許大家都能體會(huì)得到。

????? 最近翻看了表哥給我的《Head First Design Pattern》,感覺很有意思,于是產(chǎn)生了一個(gè)想法,將自己的求職經(jīng)歷用各種設(shè)計(jì)模式表現(xiàn)出來。這不僅僅是對(duì)design pattern的學(xué)習(xí)總結(jié),也可以算是對(duì)求職歷程的程序記錄。相信,它會(huì)變得很有意思的。

????? 恩,好了,現(xiàn)在俺切入正題,開始我們的設(shè)計(jì)模式之旅吧。

???

???? ?ok,首先簡單介紹下我自己吧,請(qǐng)看如下代碼:

    package com.ant.single.domain;

public class StuAnt {
	private static StuAnt ant;
	private static int stuNum=0;
	private String name = "geyubin";
	private String college = "jxxy";

	private StuAnt() {
	}
	
    //get the single instantce
	public static StuAnt getInstance() {
		if (ant == null) {
			try {
				Thread.sleep(2000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			ant = new StuAnt();
			stuNum++;			
		}
		return ant;
	}

	public void getPersonInfo() {
		if(stuNum==1){
			System.out.println("my name is " + name + " and my graduteSchool is "
					+ college);
		}else{
			System.out.println("sorry,it's not a single pattern");
		}
	}
}

  

?

?? ? 在本人信息類里面,我將構(gòu)造方法私有化了,這樣保證了其它類無法直接創(chuàng)建StuAnt的實(shí)例,而getInstance()作為訪問StuAnt類的唯一入口,提供了單一StuAnt實(shí)例的創(chuàng)建。?由于本人是唯一的,為了檢驗(yàn)這種特性,我在getPersonInfo()中調(diào)用了stuNum。

??????為了描述自己,我寫了兩份不同的簡歷,并進(jìn)行檢查是否描述的是同一個(gè)我:

    package com.ant.single.test;

import com.ant.single.domain.StuAnt;

//the class of ant resume
class Resume implements Runnable {

	@Override
	public void run() {
		StuAnt ant = StuAnt.getInstance();
		ant.getPersonInfo();
	}

}

// check the resums whether describe me in the correct way or not
public class StuTest {
	public static void main(String[] args) {
		Resume antResume = new Resume();
		Thread antResume1 = new Thread(antResume);
		Thread antResume2 = new Thread(antResume);
		antResume1.start();
		antResume1.start();

	}
}

  

?

跑一下,我猜兩份簡歷描述的應(yīng)該是同一個(gè)對(duì)象吧:

    my name is geyubin and my graduteSchool is jxxy
sorry,it's not a single pattern
  

?

    my name is geyubin and my graduteSchool is jxxy
my name is geyubin and my graduteSchool is jxxy
  

?

    sorry,it's not a single pattern
my name is geyubin and my graduteSchool is jxxy
  

?

??

    sorry,it's not a single pattern
sorry,it's not a single pattern
  

?

?

?? 怎么程序簡歷里面描述的對(duì)象不一樣的,納悶,怎不是單例。

??? 難以想象在世界的某個(gè)角落居然還有另一個(gè)“自己”。22歲的偶,做夢(mèng)也沒遇見過“太空人”著,咋,什么時(shí)候就被“克隆”了呢。

??? 簡歷里面描述的是另一個(gè)自己,那可不是開玩笑的。為了尋求答案,我翻出了自己的“葵花寶典”《head first? design pattern》,琢磨一陣,終于理出了思路:

?

antResume1:

?

1.public static StuAnt getInstance() {
2.?if (ant == null) {
3.??????ant = new StuAnt();?
4.??stuNum++;
5.??}
6.??return ant;
7.}

antResume2:

?

1.public static StuAnt getInstance() {

2.
3.?if (ant == null) {
4.?

5.??ant = new StuAnt();?
6.???stuNum++;
7.??}
8.??return ant;
9.?}

?

?????

??? 大家看看上面的兩個(gè)線程吧,這只是其中的一個(gè)特例,最后導(dǎo)致了:

?

???????

    my name is geyubin and my graduteSchool is jxxy
sorry,it's not a single pattern
  

?

??? 知道了問題點(diǎn),那我們?cè)撓胂氯绾巫尵€程同步呢,O(∩_∩)O~,sychronized,恩。請(qǐng)看修改后的StuAnt代碼:

    package com.ant.single.domain;

public class StuAnt {
	private static StuAnt ant;
	private static Integer stuNum=0;
	private String name = "geyubin";
	private String college = "jxxy";

	private StuAnt() {
	}
	
    //get the single instantce
	public static StuAnt getInstance() {
		if (ant == null) {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			synchronized (stuNum) {	
				if(ant==null){
					ant = new StuAnt();	
					stuNum++;
				}
			}
		}
		return ant;
	}

	public void getPersonInfo() {
		if(stuNum==1){
			System.out.println("my name is " + name + " and my graduteSchool is "
					+ college);
		}else{
			System.out.println("sorry,it's not a single pattern");
		}
	}
}

  

?

??? 好了,現(xiàn)在再跑跑程序:

    my name is geyubin and my graduteSchool is jxxy
my name is geyubin and my graduteSchool is jxxy
  

?

??? ,永遠(yuǎn)都是同一個(gè)實(shí)例,(*^__^*) ----簡歷里的俺是唯一的,不可替代的。?ok,這應(yīng)該是一個(gè)完整的單例模式了。

???? 準(zhǔn)備既然準(zhǔn)備好了簡歷,過幾天就去人才市場看看,欲知后事如何,請(qǐng)看“下節(jié)”------抽象工廠模式

?

?

??? 謝謝大家的觀看

???

???

?

????

?

?

?

????

?

?

?

?

?

?

?

?

?

???

單例模式-----


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲欧美在线看 | 成人性生活免费视频 | 日韩欧美一中字暮 | 欧美a在线观看 | 欧美日韩一本大道香蕉欧美 | 久久久美女 | 九天玄帝诀在线观看 | 久久99精品久久久久久臀蜜桃 | 最新国产福利 | 一级成人a毛片免费播放 | 91最新免费地址入口 | 免费一级黄色片 | 免费人成激情视频在线看 | 国产在线精品一区二区 | 性丰满妇女free性性性 | 国产99视频精品一区 | 在线观看欧美亚洲日本专区 | 在线欧美精品一区二区三区 | 久久久久爽亚洲精品 | 高清不卡一区二区三区 | 亚洲狠狠网站色噜噜 | 99在线精品免费视频九九视 | 日韩视频免费在线播放 | 欧美一级毛片免费看高清 | 日日嗷| 92国产福利久久青青草原 | 欧美高清在线精品一区二区不卡 | 久久福利青草精品免费 | 国产高清天干天天视频 | a级片网址 | 免费黄a| 亚洲日韩中文字幕一区 | 亚洲成人免费在线视频 | 欧美草逼视频 | 停停色 | 欧美夜夜操 | 国产高h| 欧美成人四级hd版 | 国产亚洲精品美女 | 美国一级毛片片免费 | 精品人人做人人爽久久久 |