posts - 195, comments - 34, trackbacks - 0, articles - 1


                      偶然發(fā)現(xiàn)了盛大的maiku, 是一個(gè)不錯(cuò)的日志和資源整理平臺(tái)。于是轉(zhuǎn)向了它,地址是 http://note.sdo.com/u/dongwq
          歡迎來(lái)看看。

          posted @ 2011-05-15 21:53 小強(qiáng)摩羯座 閱讀(248) | 評(píng)論 (0)編輯 收藏

          •  前者:看見與不看見,但是位置保留。
                •  后者處理與位置有關(guān):block, inline, none 分別是有前后換行,不換行,不顯示功能但是不保留位置。
              
              
          •  二者功能差異:保留位置,和位置形式

              
          <script language="javascript">
              function toggleVisibility(me)
              {
              
          if(me.style.visibility=="hidden")
              {
              me.style.visibility
          ="visible";
              }

              
          else
              {
              me.style.visibility
          ="hidden";
              }
              }

              
          </script>

              
          <DIV  onclick="toggleVisibility(this)"

              style
          ="position:relative">

              第一行文本將會(huì)觸發(fā)
          "hidden""visible"屬性,注意第二行的變化。

              
          </DIV>

              
          <DIV>因?yàn)関isibility會(huì)保留元素的位置,所以第二行不會(huì)移動(dòng).</DIV>

              
          <script language="javascript">

              function toggleDisplay(me){

              
          if(me.style.display=="block"){

              me.style.display
          ="inline";

              alert(
          "文本現(xiàn)在是:'inline'.");

              }

              
          else{

              
          if(me.style.display=="inline"){

              me.style.display
          ="none";

              alert(
          "文本現(xiàn)在是:'none'.3秒鐘后自動(dòng)重新顯示。");

              window.setTimeout(
          "blueText.style.display='block';",

              
          3000,"javascript");

              }

              
          else{

              me.style.display
          ="block";

              alert(
          "文本現(xiàn)在是:'block'.");

              }

              }

              }

              
          </script>

              
          <DIV><span id="blueText"

              onclick
          ="toggleDisplay(this)"

              style
          ="color:blue;position:relative;cursor:hand;">

              藍(lán)色
          </span>文字上點(diǎn)擊來(lái)查看效果.</DIV>

          posted @ 2010-09-14 13:47 小強(qiáng)摩羯座 閱讀(1038) | 評(píng)論 (0)編輯 收藏

               摘要: 1 . 日志的組成:配置文件,寫日志 log.cfg ############################################################ #      Default Logging Configuration File # # You&nbs...  閱讀全文

          posted @ 2010-09-09 15:09 小強(qiáng)摩羯座 閱讀(416) | 評(píng)論 (0)編輯 收藏

          項(xiàng)目經(jīng)理之修煉(8)——?jiǎng)e忘了告訴別人你是誰(shuí)

          文章分類:軟件開發(fā)管理
          副標(biāo)題——名不正言不順,項(xiàng)目管理難度加倍

          你能想象美國(guó)總統(tǒng)上任,卻沒有總統(tǒng)就職儀式嗎?
          你能想象北京奧林匹克運(yùn)動(dòng)會(huì),沒有開幕式表演嗎??
          OK。相信你一定見過這樣的場(chǎng)景:
          某老板匆匆忙忙地進(jìn)了屋,忽地來(lái)了一嗓子:“大家靜靜,通知大家一下:以后,某項(xiàng)目就由小張負(fù)責(zé)了!”

          **************************************************

          話說(shuō)楚漢相爭(zhēng)。劉邦在蕭何的再三舉薦下,決定讓韓信為大將。

          “來(lái)人,叫韓信過來(lái),我要封他為大將。”劉邦道。

          蕭何表示異議:“漢王你一向傲慢沒有禮貌,現(xiàn)在拜大將就和喊一個(gè)小孩子那么隨便,所以韓信才會(huì)離開的。漢王要想用人家,必須選一個(gè)吉日,吃素,設(shè)祭壇,用非常鄭重地禮節(jié)來(lái)拜將才行。”劉邦同意蕭何的意見。

          結(jié)果,盡管韓信是個(gè)無(wú)名小卒,卻順利的接過了軍權(quán),而沒有碰到那些元老們的抵抗,成功地導(dǎo)演了一幕幕戰(zhàn)爭(zhēng)奇跡。

          **************************************************

          登臺(tái)拜將,是一件具有深刻管理內(nèi)涵的故事。它告訴我們這樣一個(gè)道理:
          ——內(nèi)容是重要的,但形式卻是不容忽視。

          我們不求老板非要在某個(gè)公開場(chǎng)合悠揚(yáng)地宣告:“某項(xiàng)目成立了!!小張從此站起來(lái)了!!!”什么吉日,什么齋戒,什么禮儀。。。也就罷了。

          但是,不給正式任命書;不在正式場(chǎng)合公布;甚至連一個(gè)頭銜都舍不得。這絕對(duì)是沒天理的。

          **************************************************

          “看,老板不重視這個(gè)項(xiàng)目。。。”(相關(guān)人員)
          “瞧,老板不重視這個(gè)家伙。估計(jì)這個(gè)家伙沒有什么后臺(tái)” (相關(guān)人員)
          “你負(fù)責(zé)某項(xiàng)目?我怎么不知道有這么個(gè)項(xiàng)目呢?你是哪位啊?” (相關(guān)人員)
          “老板似乎并不重視/信任我啊” (項(xiàng)目經(jīng)理)

          ***************************************************

          以上種種,對(duì)項(xiàng)目的推動(dòng)極為不利的。尤其是手下有資深員工、或者項(xiàng)目經(jīng)理候補(bǔ)者等挑戰(zhàn)者的時(shí)候,問題將會(huì)加倍嚴(yán)重。

          大家可能會(huì)懷疑:“沒有那么嚴(yán)重吧?”
          沒有不嚴(yán)重,只有更嚴(yán)重!!
          這其中蘊(yùn)含著一個(gè)深刻的道理——名不正則言不順!!

          言不順是什么意思呢?

          -你的意見可能被忽視;
          -你的命令可能被當(dāng)作建議;
          -你的計(jì)劃可能被別人忘記;
          試想,你如果是項(xiàng)目經(jīng)理,你的項(xiàng)目將會(huì)怎樣。。。。。。

          *********************************************************

          Question: 我沒有辦法叫老板改變。那么,我該怎么辦?
          Answer:要寫一封郵件!!告訴別人你是誰(shuí)。

          *********************************************************

          你的老板犯了錯(cuò)誤,可是你不能將錯(cuò)就錯(cuò)!你的老板忽視了“名”的問題(形式問題),你一定要扳回來(lái)!!
          試想,你的老板不重視,你也不重視,你能指望別人重視嗎??
          當(dāng)然,答案就是別人會(huì)更不重視!!

          那么,這封郵件該怎么寫呢??


          **************************************************

          MailTo: 所有下屬
          CC:     所有相關(guān)領(lǐng)導(dǎo),所有相關(guān)人員,自己
          Title:  【A項(xiàng)目】A項(xiàng)目的新項(xiàng)目經(jīng)理小張向大家問好
          Content:

          1 開門見山地告訴別人自己的位置(正名)
          2 向相關(guān)人員致敬,并自然地點(diǎn)出自己的優(yōu)勢(shì)(自我介紹)
          3 向領(lǐng)導(dǎo)致敬致謝(拉近和領(lǐng)導(dǎo)關(guān)系)
          4 暗示自己的權(quán)利范圍(宣布自己的領(lǐng)地)
          5 喊兩句口號(hào)(合作和積極的姿態(tài)是必要的)
          6 不要忘了簽名(進(jìn)一步加深印象)

          //其中,1、2、4是必須要表現(xiàn)出來(lái)的

          **************************************************

          上面這封郵件,基本上完成了告訴別人你是誰(shuí)的問題,而且完成了你的位置身份暗示。
          如果說(shuō)老板不負(fù)責(zé)任的任命形式帶給你身份位置認(rèn)同危機(jī),沉重打擊了你的威信的話,
          通過這份郵件,你已經(jīng)用身份暗示這個(gè)武器,奪回了主動(dòng)權(quán)!!

          從這封信以后,由于你的身份位置的明確,
          相關(guān)人員在潛意識(shí)中會(huì)認(rèn)同你的領(lǐng)地所有權(quán),
          會(huì)對(duì)在你的領(lǐng)地上和你發(fā)生沖突產(chǎn)生不自然,不合法甚至負(fù)罪感,
          從而下意識(shí)中就會(huì)避免和你發(fā)生沖突。

          反過來(lái)講,你的位置身份的明確,將成為你自信的源泉,
          而這種位置感產(chǎn)生的自信將使你的發(fā)言充滿了正義感,
          加上項(xiàng)目經(jīng)理這個(gè)位置所帶來(lái)的小小的勢(shì)能。。。
          權(quán)力這個(gè)東西,真好!!

          嗯,一個(gè)好的開端,不是嗎?

          posted @ 2010-09-08 17:02 小強(qiáng)摩羯座 閱讀(220) | 評(píng)論 (0)編輯 收藏



          1、函數(shù)定義和使用

           

          <script>

          function sqrt(x) {
              return x * x;
          }
          function other(f) {
              var y = f(10);
              return y;
          }

          var farr = new Array();
          farr[0] = function(arg) { return arg + arg;};
          farr[1] = function(arg) { return arg * arg;};

          document.write(farr[0](10) + '<br/>');
          document.write(farr[1](10));

           

          document.write(other(sqrt));

          </script>

          sqrt.count = 0;
          sqrt.getcount = function() {
                              return this.count;
                          }; // 附加函式

          //sqrt();
          document.write(sqrt.count, '<br/>');
          document.write(sqrt.getcount());

          posted @ 2010-07-25 15:38 小強(qiáng)摩羯座 閱讀(199) | 評(píng)論 (0)編輯 收藏

          杜拉拉升級(jí)記:


           關(guān)鍵一點(diǎn),你的上級(jí)要喜歡你。工作中涉及要決策的都要跟上級(jí)報(bào)告。這是上級(jí)的作用。


           對(duì)于平級(jí)的同事是不能用命令,不能要求別人做事的。

           事情不能自己承擔(dān)下來(lái)。

           

          感謝小熊同學(xué)借我這本書看
              說(shuō)說(shuō)我的感受:此書沒有書評(píng)中說(shuō)的那么好,當(dāng)然也沒有那么壞。大家各取所需就好。與其叫小說(shuō),不如說(shuō)是一種創(chuàng)新形式的職場(chǎng)教材。不要太去在意作者的文筆,而要更多的體會(huì)書中各位同學(xué)的處事之道。
              幾句話總結(jié)一下:
              1、勤奮是王道,其他的都屬于EQ范疇了
              2、要注意技巧,尤其是溝通技巧,別干了半天,沒人知道你的工作量有多少。
              3、掂量自己的能力,做好該做的事,不做不該做的事,比如越級(jí)匯報(bào)。
              4、不要說(shuō)人壞話,能幫助別人時(shí)要幫,關(guān)鍵時(shí)刻即使沒有人幫你說(shuō)話,但也不會(huì)有人說(shuō)你的壞話。不信的話,去看看圣經(jīng)怎么說(shuō)得吧。
              5、要有氣量,做事要圓通。
              6、要有自己的風(fēng)格,風(fēng)格沒有好壞之分,但是一定要有。
              7、告訴我們什么是好工作,這點(diǎn)比較長(zhǎng),見下面的摘抄(感謝“木馬|造化弄人”的貢獻(xiàn)):
            
            “一、關(guān)于什么樣的職位算好職位
              
            1.你得找一家好公司
            什么是好公司?
                
            1)產(chǎn)品附加值高,生意好,并且從業(yè)務(wù)線看,具備持續(xù)發(fā)展的能力和前景;
            2)有專業(yè)的/聰明能干的/經(jīng)驗(yàn)豐富的/并且為人現(xiàn)實(shí)的管理層,在把握這公司,并且有保護(hù)一貫這樣用人的制度的公司;
            3)有嚴(yán)格的財(cái)務(wù)制度,對(duì)預(yù)算、費(fèi)用和利潤(rùn)等于投入產(chǎn)出有關(guān)的內(nèi)容,敏感并且具有強(qiáng)控制力的公司;
            4)崇尚客戶導(dǎo)向/市場(chǎng)導(dǎo)向/結(jié)果導(dǎo)向/執(zhí)行力的公司;
            5)有專業(yè)嚴(yán)謹(jǐn)全面的流程和制度,并且其執(zhí)行有利于推動(dòng)業(yè)務(wù)的良性發(fā)展,具有控制性和實(shí)操性兼?zhèn)涞奶攸c(diǎn);
            ---總結(jié)起來(lái),就是一家具有持續(xù)贏利能力的牛B公司
                
            2.你的找一個(gè)好的方向
                
            什么是好的方向?
             永遠(yuǎn)不要遠(yuǎn)離核心業(yè)務(wù)線。你得看明白,在企業(yè)中,哪個(gè)環(huán)節(jié)是實(shí)現(xiàn)利潤(rùn)最大化的關(guān)鍵環(huán)節(jié)。有時(shí)候是銷售環(huán)節(jié),有時(shí)候是市場(chǎng)策劃環(huán)節(jié),有時(shí)候是研發(fā)環(huán)節(jié),有時(shí)候是生產(chǎn)環(huán)節(jié),視乎你所在行業(yè)而不同。
             最重要的環(huán)節(jié),總是 最貴的,最牛的,最得到重視的,也是最有發(fā)展前途的部門。它擁有最多的資源和最大的權(quán)威--你應(yīng)該依附在這樣的核心業(yè)務(wù)線上發(fā)展,至少能避免被邊緣化,而成為關(guān)鍵人才的可能性則更大了。
                
            3.你得跟一個(gè)好老板。
                
              好老板的標(biāo)準(zhǔn)很多,關(guān)鍵的是,你要設(shè)法跟上一個(gè)在公司處于強(qiáng)勢(shì)地位的老板。他強(qiáng),你才能跟著上。跟了一個(gè)弱勢(shì)的老板,你的前途就很同意被根著給耽擱了。
                
            二、關(guān)于具備謀取好職位的資格
            要具備怎么樣的資格呢?一般情況下,你得是用人部門眼中的優(yōu)秀者。
            
            
            怎么樣才算優(yōu)秀呢?
                
            1.對(duì)上級(jí)
                
            1)你要知道與他建立一致性,他覺得重要的事情,你就覺得重要,他認(rèn)為緊急的事情你也認(rèn)為緊急,你得和他勁往一處使--通常情況下,你得表現(xiàn)和能力好還是不好,主要是你得直接主管說(shuō)了算的;
            
            2)你的具備從上級(jí)那里獲得支持和資源的能力--別你干的半死,你的老板還對(duì)你愛搭不理的,那你就不具備本條件的能力。
                
            2.對(duì)下級(jí)
                
            1)要能明確有效的設(shè)置正確的工作目標(biāo),使其符合SMART原則;
            2)要能有效地管理團(tuán)隊(duì)內(nèi)部沖突;
            3)要能公平合理地控制分配團(tuán)隊(duì)資源;
            4) 要有愿望和能力發(fā)展指導(dǎo)下屬,并恰當(dāng)授權(quán);
            5)恰當(dāng)?shù)馁潛P(yáng)鼓勵(lì)認(rèn)可團(tuán)隊(duì)成員;
            6)尊重不同想法,分享知識(shí)經(jīng)驗(yàn)和信息,建立信任的氛圍。
                
            3.對(duì)內(nèi)、外部客戶
                
            1)愿意提供協(xié)助和增值服務(wù)(不然要你干嘛);
            2)善意聆聽并了解需求(搞明白人家需要的到底是啥);
            3)可靠的提供產(chǎn)品和服務(wù),及時(shí)跟進(jìn)(千萬(wàn)注意及時(shí));
            4)了解組織架構(gòu)并具影響力。及早地建立并維護(hù)關(guān)鍵的關(guān)系,是這樣的關(guān)系有利于你達(dá)成業(yè)績(jī)(專業(yè)而明智的選擇);
                
            比如你想取得一個(gè)內(nèi)部職位,你的搞明白了,誰(shuí)是關(guān)鍵的做決定的人物,別傻乎乎不小心給這個(gè)人留下壞印象。
                
            比如必要去客人那里拿訂單,你找了一個(gè)關(guān)鍵的人物A,可是你也別忽略作購(gòu)買決定環(huán)節(jié)上的另一個(gè)人物B,沒準(zhǔn)B和A是死敵,本來(lái)B會(huì)同意給你下訂單的,就因?yàn)锳同意給你單子,B就是不同意給你單子。
                
            4.對(duì)本崗任務(wù)
                
            1)清楚自己的定位和職責(zé)--別搞不清楚自己是誰(shuí),什么是自己的活,知道什么該報(bào)告,什么要自己獨(dú)立做決定;
            2)結(jié)果導(dǎo)向--設(shè)立高目標(biāo),信守承諾,承擔(dān)責(zé)任,注重質(zhì)量、速度和期限,爭(zhēng)取主動(dòng),無(wú)需督促;
            3)清晰的制定業(yè)務(wù)計(jì)劃并有效實(shí)施;
            4)學(xué)習(xí)能力--愿意學(xué),堅(jiān)持學(xué),及時(shí)了解行業(yè)趨勢(shì)/競(jìng)爭(zhēng)狀況和技術(shù)更新,并學(xué)以致用;
            5)承受壓力的能力--嚴(yán)峻的工作條件下,能堅(jiān)忍不拔,想辦法獲取資源、支持和信息,努力以實(shí)現(xiàn)甚至超越目標(biāo);
            6)適應(yīng)的能力--如適應(yīng)多項(xiàng)要求并存,優(yōu)先級(jí)變換以及情況不明等工作條件,及時(shí)調(diào)整自己的行為和風(fēng)格來(lái)適應(yīng)不同個(gè)人及團(tuán)隊(duì)的需要(工作重心會(huì)變化,老板會(huì)換人,客人也會(huì)變,別和他們說(shuō)“我過去如何如何”,多去了解對(duì)方的風(fēng)格) ”。

           

           

           

          posted @ 2010-06-20 23:43 小強(qiáng)摩羯座 閱讀(234) | 評(píng)論 (0)編輯 收藏

          方與圓:


              最少期望的去感謝別人。不要抱著目的去感謝別人,甚至事前感謝也好。感謝只需說(shuō)一次。

            發(fā)掘別人不明顯的優(yōu)點(diǎn)加以贊揚(yáng)。
            贊揚(yáng)行動(dòng)和品性,而不要擴(kuò)大到贊揚(yáng)一個(gè)人。贊揚(yáng)的原因要說(shuō)明。


            和氣生財(cái)嗎?喝杯水。

            對(duì)陌生人要特別要笑。微笑是影響人氣質(zhì)的一個(gè)特別重要的東西。

           

            對(duì)生活的真誠(chéng),快樂的感情最能夠打動(dòng)人。 男的微笑也很好。

           

          認(rèn)真的品質(zhì):畫一個(gè)月和十年。

          組裝的質(zhì)量差?認(rèn)真的態(tài)度。德國(guó)人的認(rèn)真,指路會(huì)指出的很具體的。

          只有最認(rèn)真的人才能做出最好的產(chǎn)品。

           

          自動(dòng)自發(fā)的精神,一定要發(fā)揮自己的主觀能動(dòng)性。

          當(dāng)成自己的事來(lái)做吧。要主動(dòng)的來(lái)做。


          做好產(chǎn)品是人的一種尊嚴(yán)。爭(zhēng)強(qiáng)好勝在自己的工作上面。因?yàn)檫@是你的發(fā)揮場(chǎng)地。

          只辦總裁班?成本與質(zhì)量觀念不一樣的? 規(guī)模經(jīng)濟(jì)?質(zhì)量了的產(chǎn)品成本會(huì)降低。

          檢查的目的是為了改進(jìn)生活流程。

          管制圖?


          困定的供貨商?不是投標(biāo)。是指定方式做。


          永遠(yuǎn)追求持續(xù)不斷的完善。

           有必要再試一次。

          改進(jìn)自己的產(chǎn)品吧。

          也淘汰了自己的競(jìng)爭(zhēng)者。 一個(gè)系列的生產(chǎn)方式是不錯(cuò)的。


          到外去演講,不做化療?活過了三年?


          要有自己的追求。活就要活出自己的價(jià)值。無(wú)論在何時(shí)的年齡,都要有自己的追求。

          人生不是直線的,是C型的人生。


          人生可以隨時(shí)開始。

          posted @ 2010-06-12 11:17 小強(qiáng)摩羯座 閱讀(291) | 評(píng)論 (0)編輯 收藏

          <設(shè)計(jì)模式:java語(yǔ)言中的應(yīng)用>摘要、總結(jié) 收藏
          <設(shè)計(jì)模式:java語(yǔ)言中的應(yīng)用>一書已經(jīng)學(xué)完,現(xiàn)做個(gè)摘要、總結(jié)。

          創(chuàng)建模式(Creational Patterns)
          Abstract Factory Builder
          Factory Method  Prototype
          Singleton

          結(jié)構(gòu)模式(Structural Patterns)
          Adapter  Bridge
          Composite Decorator
          Facade  Flyweight
          Proxy

          行為模式(Behavioral Pattern)
          Chain of Responsibility  Command
          Interpreter   Iterator
          Mediator   Memento
          Observer   State
          Strategy   Template Method
          Visitor

          一、創(chuàng)建模式(Creational Patterns)

          1.Abstract Factory(抽象工廠)—把相關(guān)零件組合成產(chǎn)品
           Abstract Factory Pattern 是把各種抽象零件組合成抽象產(chǎn)品。換句話說(shuō),處理的重點(diǎn)是在接口(API)而不是零件的具體實(shí)現(xiàn)。只利用接口(API)就能把零件組合成產(chǎn)品.
           程序示例:
           --Main.java 測(cè)試用的類
           |-factory
           |    |-------Factory.java 表示抽象工廠的類(產(chǎn)生Link,Tray,Page)
           |    |-------Itme.java 用來(lái)統(tǒng)一處理Link和Tray的類
           |    |-------Link.java 抽象零件:表示HTML連接的類
           |    |-------Tray.java 抽象零件:抽取Link和Tray的類
           |    |-------Page.java 抽象零件:表示HTML網(wǎng)頁(yè)的類
           |
           |-listfactory
                |-------listFactory.java 表示具體工廠的類(產(chǎn)生ListLink,ListTray,ListPage)
                |-------listLink.java 具體零件:表示HTML連接的類
                |-------listTray.java 具體零件:抽取Link和Tray的類
                |-------listPage.java 具體零件:表示HTML網(wǎng)頁(yè)的類
           步驟:定義抽象零件->用抽象零件定義抽象工廠->定義具體零件(繼承實(shí)現(xiàn)抽象零件)->定義具體工廠(繼承實(shí)現(xiàn)抽象工廠,制造實(shí)際產(chǎn)品)

          2.Factory Method
           Factory Method Pattern 在父類規(guī)定對(duì)象的創(chuàng)建方法,但并沒有深入到較具體的類名.所有具體的完整內(nèi)容都放在子類.根據(jù)這個(gè)原則,我們可以大致分成產(chǎn)生對(duì)象實(shí)例的大綱(框架)和實(shí)際產(chǎn)生對(duì)象實(shí)例的類兩方面.
           程序示例:
           --Main.java 測(cè)試用的類
           |-framework
           |    |-------Product.java 僅定義抽象方法use的抽象類
           |    |-------Factory.java 規(guī)定createProduct,registerProduct,實(shí)現(xiàn)create的抽象類(類似模板方法)
           |
           |-idcard
                |-------IDCard.java 實(shí)現(xiàn)方法use的具體類
                |-------IDCardFactory.java 實(shí)現(xiàn)方法createProduct,registerProduct的類
           步驟:定義抽象產(chǎn)品->根據(jù)抽象產(chǎn)品定義抽象工廠->定義具體產(chǎn)品(繼承實(shí)現(xiàn)抽象產(chǎn)品)->定義具體工廠(繼承實(shí)現(xiàn)抽象工廠,制造實(shí)際產(chǎn)品)

          3.Singleton(單件)-唯一的對(duì)象實(shí)例
           Singleton Pattern 是針對(duì)一個(gè)類而言. Singleton類只會(huì)產(chǎn)生1個(gè)對(duì)象實(shí)例.Singleton類把singleton定義為static字段(類變量),再以Singleton類的對(duì)象實(shí)例進(jìn)行初始化.這個(gè)初始化的操作僅在加載Singleton類時(shí)進(jìn)行一次.
           Singleton類的構(gòu)造函數(shù)是private的,主要是為了禁止從非Singleton類調(diào)用構(gòu)造函數(shù).即使下面這個(gè)表達(dá)式不在此類之內(nèi),編譯時(shí)仍然會(huì)出現(xiàn)錯(cuò)誤.
            程序示例:
           |--Main.java 測(cè)試用的類
           |--Singleton.java 只有1個(gè)對(duì)象實(shí)例的類
           步驟:定義一個(gè)該類類型的static字段,同時(shí)實(shí)例化->該類的構(gòu)造方法設(shè)為private->定義一個(gè)static的getInstance()方法,返回已經(jīng)實(shí)例化的static字段.

          4.Builder(生成器)-組合復(fù)雜的對(duì)象實(shí)例
           Builder Pattern 是采用循序漸進(jìn)的方式組合較復(fù)雜對(duì)象實(shí)例的.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Builder.java 規(guī)定建立文件時(shí)的方法的抽象類
           |--Director.java 產(chǎn)生1個(gè)文件的類
           |--TextBuilder.java 產(chǎn)生plaintext格式(一般文本格式)的類
           |--HTMLBuilder.java 產(chǎn)生HTML格式的類
           步驟:定義建立文件時(shí)的通用方法(Builder.java)->根據(jù)通用方法組織建立文件(Director.java)->根據(jù)不同需求實(shí)現(xiàn)建立文件的通用方法(TextBuilder.java,HTMLBuilder.java)

          5.Prototype(原型)-復(fù)制建立對(duì)象
           Prototype Pattern 不是利用類產(chǎn)生對(duì)象實(shí)例,而是從一個(gè)對(duì)象實(shí)例產(chǎn)生出另一個(gè)新對(duì)象實(shí)例.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--MessageBox.java 把字符串框起來(lái)use的類.實(shí)現(xiàn)use和createClone
           |--UnderlinePen.java 把字符串加上下劃線的類.實(shí)現(xiàn)use和createCone
           |--framework
                |-------Product.java 已聲明抽象方法use和createClone的接口
                |-------Manager.java 利用createClone復(fù)制對(duì)象實(shí)例的類
           步驟:規(guī)定可復(fù)制產(chǎn)品的接口(Product.java,繼承Cloneable接口)->保存可復(fù)制的產(chǎn)品(以Product類型存以哈西表中),并提供復(fù)制產(chǎn)品的方法create(調(diào)用產(chǎn)品的復(fù)制方法,復(fù)制工作在具體產(chǎn)品類中執(zhí)行)(Manager.java)->定義可復(fù)制的具體產(chǎn)品(UnderlinePen.java,MessageBox.java,實(shí)現(xiàn)復(fù)制產(chǎn)品方法)


          二、結(jié)構(gòu)模式(Structural Patterns)

          1.Adapter(適配器)-換個(gè)包裝再度利用
           Adapter Pattern 把既有的無(wú)法直接利用的內(nèi)容轉(zhuǎn)換成必要的類型后再使用.具有填平"既有內(nèi)容"和"需要結(jié)果"兩者間"落差"的功能.
           Adapter Pattern 有繼承和委托兩種形式.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Banner.java 具有原始功能showWithParen,showWithAster的類
           |--Print.java 所需新功能printWeak,printStrong的接口或抽象類
           |--PrintBanner.java 把原始功能轉(zhuǎn)換成新功能的類
           步驟:
           (繼承)構(gòu)造具有原始功能的類(Banner.java)->定義具有新功能的接口(Print.java)->轉(zhuǎn)換(PrintBanner.java,繼承Banner實(shí)現(xiàn)Print接口,即繼承舊方法實(shí)現(xiàn)新功能)
           (委托)構(gòu)造具有原始功能的類(Banner.java)->定義具有新功能的抽象類(Print.java)->轉(zhuǎn)換(PrintBanner.java,繼承具有新功能的Print類.定義委托對(duì)象,即原始功能類.構(gòu)造時(shí)傳入原始功能實(shí)例對(duì)象,新功能的實(shí)現(xiàn)利用委托對(duì)象的原始功能.)

          2.Bridge(橋接)-分成功能層次和實(shí)現(xiàn)層次
           Bridge Pattern 溝通著"功能的類層次"和"實(shí)現(xiàn)的類層次"
           功能的類層次:給父類增加不同的功能
           實(shí)現(xiàn)的類層次:給父類以不同的實(shí)現(xiàn)
           Bridge Pattern 本質(zhì)上是通過功能類(最上層的功能類)中的一個(gè)實(shí)現(xiàn)類(最上層的實(shí)現(xiàn)類,一般是抽象類)字段來(lái)橋接兩個(gè)類層次的.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Display.java 功能類層次的最上層類
           |--CountDisplay.java 功能類層次的新增功能類
           |--DisplayImpl.java 實(shí)現(xiàn)類層次的最上層類
           |--StringDisplayImpl.java 實(shí)現(xiàn)類層次的實(shí)現(xiàn)類
           步驟:定義實(shí)現(xiàn)類層次的最上層類(DisplayImpl.java)->定義功能類層次的最上層類(Display.java,使用Adapter Pattern的委托方式把DisplayImpl.java的原始功能轉(zhuǎn)換成Display.java的新功能)->定義功能類層次的新增功能類(CountDisplay.java)->定義實(shí)現(xiàn)類層次的實(shí)現(xiàn)類(StringDisplayImpl.java)

          3.Composite(組成)-對(duì)容器和內(nèi)容一視同仁
           有時(shí)候把容器和內(nèi)容當(dāng)作是同類來(lái)處理會(huì)比較好下手。容器里面可以是內(nèi)容,也可以是更小一號(hào)的容器;而這個(gè)小一號(hào)的容器里還可以再放更小一號(hào)的容器,可以建立出像這樣大套小的結(jié)構(gòu)和遞歸結(jié)構(gòu)的Pattern就是Composite Pattern
           使用Composite Pattern,容器和內(nèi)容必須有一定的共性.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--File.java 表示文件的類
           |--Directory.java 表示目錄的類
           |--Entry.java 對(duì)File和Directory一視同仁的抽象類
           |--FileTreatmentException.java 欲在文件內(nèi)新增Entry時(shí)所發(fā)生的異常類
           步驟:定義異常類(FileTreatmentException.java)->定義進(jìn)入點(diǎn)類,即將容器和內(nèi)容一視同仁的抽象類(Entry.java,容器和內(nèi)容都含有共同的方法)->定義容器類和內(nèi)容類(File.java,Directory.java,繼承Entry,實(shí)現(xiàn)通用方法)

          4.Decorator(裝飾)-對(duì)裝飾和內(nèi)容一視同仁
           先建立一個(gè)核心對(duì)象,再一層層加上裝飾用的功能,就可以完成符合所需的對(duì)象.可以看成是多個(gè)通用的適配器.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Display.java 打印字符串用的抽象類
           |--StringDisplay.java 只有1行的打印字符串用的類
           |--Border.java 表示"裝飾外框"的抽象類
           |--SideBorder.java 只在左右加上裝飾外框的類
           |--FullBorder.java 在上下左右加上裝飾外框的類
           步驟:定義核心對(duì)象的抽象類(Display.java)->定義核心對(duì)象類(StringDisplay.java)->定義裝飾類的抽象類(Border.java,繼承核心對(duì)象的抽象類Display.java,以便裝飾和內(nèi)容一視同仁.裝飾類中繼承自核心對(duì)象抽象類的方法委托給傳入的核心對(duì)象)->定義其它裝飾類(SideBorder.java,FullBorder.java,繼承Border.java)

          5.Facade(外觀)-單一窗口
           Facade Pattern 能整理錯(cuò)綜復(fù)雜的來(lái)龍去脈,提供較高級(jí)的接口(API).Facade參與者讓系統(tǒng)外部看到較簡(jiǎn)單的接口(API).而且Facade參與者還會(huì)兼顧系統(tǒng)內(nèi)部各類功能和互動(dòng)關(guān)系,以最正確的順序利用類.
           Facade Pattern 把業(yè)務(wù)邏輯封裝起來(lái),只提供一個(gè)簡(jiǎn)單的接口給外部調(diào)用.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--maildata.txt 郵件列表文件
           |--pagemaker
                 |-------Database.java 從郵件信箱取得用戶名稱的類
                 |-------HtmlWriter.java 產(chǎn)生HTML文件的類
                 |-------PageMaker.java 根據(jù)郵件信箱產(chǎn)生用戶網(wǎng)頁(yè)的類
           步驟:定義業(yè)務(wù)邏輯需要的相關(guān)類(Database.java,HtmlWriter.java)->定義外部接口類(PageMaker.java)

          6.Flyweight(享元)-有相同的部分就共享,采用精簡(jiǎn)政策
           "盡量共享對(duì)象實(shí)例,不做無(wú)謂的new".不是一需要對(duì)象實(shí)例就馬上new,如果可以利用其他現(xiàn)有的對(duì)象實(shí)例,就讓它們共享.這就是Flyweigth Pattern的核心概念.
           Flyweight Pattern 實(shí)質(zhì)是把創(chuàng)建的占用內(nèi)存量大的對(duì)象存儲(chǔ)起來(lái)(一般用hashtable存儲(chǔ)),后續(xù)使用時(shí),再?gòu)膆ashtable取出.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--BigChar.java 表示"大型字符"的類
           |--BigCharFactory.java 共享并產(chǎn)生BigChar的對(duì)象實(shí)例的類
           |--BigString.java 表示多個(gè)BigChar所產(chǎn)生的"大型文本"的類
           步驟:定義占用內(nèi)存量大,需要共享的類(Display.java)->定義共享實(shí)例的類(BigCharFactory.java,共享處理在此進(jìn)行,將產(chǎn)生的共享對(duì)象存儲(chǔ)在哈希表中,第二次使用時(shí)從表中取出即可,不需要new)->定義共享對(duì)象組合使用類(BigString.java)

          7.Proxy(代理)-需要再建立
           代理就是那個(gè)代替本來(lái)應(yīng)該自己動(dòng)手做事的本人的人.
           由于代理純粹只是代理工作而已,因此能力范圍也有限.如果遇到超出代理能力所及的范圍,代理就應(yīng)該去找本人商量才對(duì).
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Printer.java 表示命名的打印機(jī)的類(本人)
           |--Printable.java Printer和PrinterProxy共享的接口
           |--PrinterProxy.java 表示命名的打印機(jī)的類(代理)
           步驟:定義本人和代理都能處理的問題的接口(Printable.java)->建立本人類(Printer.java,實(shí)現(xiàn)Printable.java接口)->建立代理類(PrinterProxy.java,定義本人字段,把代理無(wú)法處理的問題交給本人)


          三、行為模式(Behavioral Pattern)

          1.Chain of Responsibility(職責(zé)鏈)-責(zé)任轉(zhuǎn)送
           先對(duì)人產(chǎn)生一個(gè)要求,如果這個(gè)人有處理的能力就處理掉;如果不能處理的話,就把要求轉(zhuǎn)送給"第二個(gè)人".同樣的,如果第二個(gè)人有處理的能力時(shí)就處理掉,不能處理的話,就繼續(xù)轉(zhuǎn)送給"第三個(gè)人",依此類推.這就是Chain of Responsiblility Pattern.
           Chain of Responsibility Pattern 的關(guān)鍵在于定義轉(zhuǎn)送字段(next)和定義職責(zé)鏈.
           程序示例:
           |--Main.java 建立Support的連鎖,產(chǎn)生問題的測(cè)試用類
           |--Trouble.java 表示發(fā)生問題的類.內(nèi)有問題編號(hào).
           |--Support.java 解決問題的抽象類.內(nèi)有轉(zhuǎn)送字段和處理方法.
           |--NoSupport.java 解決問題的具體類(永遠(yuǎn)"不處理")
           |--LimitSupport.java 解決問題的具體類(解決小于指定號(hào)碼的問題)
           |--OddSupport.java 解決問題的具體類(解決奇數(shù)號(hào)碼的問題)
           |--SpecialSupport.java 解決問題的具體類(解決特殊號(hào)碼的問題)
           步驟:建立問題類(Trouble.java)->建立解決問題的抽象類(Support.java,定義了轉(zhuǎn)送字段next,設(shè)置轉(zhuǎn)送字段的方法setNext和處理問題的方法support)->建立解決問題的具體類(NoSupport.java,LimitSupport.java,OddSupport.java,SpecialSupport.java,繼承Support.java)->產(chǎn)生處理問題的對(duì)象,建立職責(zé)鏈

          2.Command(命令)-將命令寫成類
           用一個(gè)"表示命令的類的對(duì)象實(shí)例"來(lái)代表欲執(zhí)行的操作,而不需采用"調(diào)用方法"的類的動(dòng)態(tài)處理.如欲管理相關(guān)紀(jì)錄,只需管理該對(duì)象實(shí)例的集合即可.而若預(yù)先將命令的集合存儲(chǔ)起來(lái),還可再執(zhí)行同一命令;或者是把多個(gè)命令結(jié)合成一個(gè)新命令供再利用.
           Command Pattern 重點(diǎn)在于存儲(chǔ)/使用命令
           程序示例:
           --Main.java 測(cè)試用的類
           |-command
           |    |-------Command.java 表示"命令"的接口
           |    |-------MacroCommand.java 表示"結(jié)合多個(gè)命名的命令"的類
           |
           |-drawer
                |-------DrawCommand.java 表示"點(diǎn)的繪制命令"的類
                |-------Drawable.java 表示"繪制對(duì)象"的接口
                |-------DrawCanvas.java 表示"繪制對(duì)象"的類
           步驟:建立命令接口(Command.java)->建立命令結(jié)合類(MacroCommand.java,將各個(gè)命令存儲(chǔ)到一個(gè)Stack類型的字段)->建立繪制命令類(DrawCommand.java,定義繪制對(duì)象字段drawable,實(shí)現(xiàn)命令接口)->建立繪制對(duì)象接口(Drawable.java)->建立繪制對(duì)象類(DrawCanvas.java,實(shí)現(xiàn)繪制對(duì)象接口,定義命令集合字段history)->測(cè)試

          3.Interpreter(解釋器)-以類來(lái)表達(dá)語(yǔ)法規(guī)則
           Interpreter Pattern 是用簡(jiǎn)單的"迷你語(yǔ)言"來(lái)表現(xiàn)程序要解決的問題,以迷你語(yǔ)言寫成"迷你程序"而表現(xiàn)具體的問題.迷你程序本身無(wú)法獨(dú)自啟動(dòng),必須先用java語(yǔ)言另外寫一個(gè)負(fù)責(zé)"解釋(interpreter)"的程序.解釋程序能分析迷你語(yǔ)言,并解釋\執(zhí)行迷你程序.這個(gè)解釋程序也稱為解釋器.當(dāng)應(yīng)解決的問題發(fā)生變化時(shí),要修改迷你程序來(lái)對(duì)應(yīng)處理.而不是修改用java語(yǔ)言寫成的程序.
           迷你語(yǔ)言語(yǔ)法:
           <program>::=program<command list>
           <command list>::=<command>* end
           <command>::=<repeat command>|<primitive command>
           <repeat command>::=repeat<number><command list>
           <primitive command>::=go|right|left
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Node.java 樹狀剖析中"節(jié)點(diǎn)"的類
           |--ProgramNode.java 對(duì)應(yīng)<program>的類
           |--CommandListNode.java 對(duì)應(yīng)<command list>的類
           |--CommandNode.java 對(duì)應(yīng)<command>的類
           |--RepeatCommandNode.java 對(duì)應(yīng)<repeat command>的類
           |--PrimitiveCommandNode.java 對(duì)應(yīng)<primitive command>的類
           |--Context.java 表示語(yǔ)法解析之前后關(guān)系的類
           |--ParseException.java 語(yǔ)法解析中的例外類
           步驟:確定迷你語(yǔ)言的語(yǔ)法->建立語(yǔ)法解析類(Context.java,使用java.util.StringTokenizer類)->建立解析異常類(ParseException.java)->建立語(yǔ)法節(jié)點(diǎn)抽象類(Node.java,定義parse解析方法)->建立各語(yǔ)法節(jié)點(diǎn)對(duì)應(yīng)的語(yǔ)法類(ProgramNode.java,CommandListNode.java,CommandNode.java,RepeatCommandNode.java,PrimitiveCommand.java,繼承語(yǔ)法節(jié)點(diǎn)Node.java類)

          4.Iterator-迭代器
           Iterator Pattern 是指依序遍歷并處理多個(gè)數(shù)字或變量.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Aggregate.java 表示已聚合的類
           |--Iterator.java 執(zhí)行遞增\遍歷的接口
           |--Book.java 表示書籍的類
           |--BookShelf.java 表示書架的類
           |--BookShelfIterator.java 掃描書架的類
           步驟:定義聚合接口(Aggregate.java)->定義遍歷接口(Iterator.java)->建立具體的遍歷對(duì)象類(Book.java)->建立具體的聚合類(BookShelf.java,實(shí)現(xiàn)聚合接口)->建立具體的遍歷類(BookShelfIterator.java,實(shí)現(xiàn)遍歷接口)

          5.Mediator(中介者)-只要面對(duì)一個(gè)顧問
           每個(gè)成員都只對(duì)顧問提出報(bào)告,也只有顧問會(huì)發(fā)出指示給各個(gè)成員;成員們彼此也不會(huì)去探問目前狀況如何,或亂發(fā)指示給其他成員.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Mediator.java 決定"顧問"接口(API)的接口
           |--Colleague.java 決定"成員"接口(API)的接口
           |--ColleagueButton.java 實(shí)現(xiàn)Colleagues接口.表示按鍵的類
           |--ColleagueTextField.java 實(shí)現(xiàn)Colleagues接口.輸入文本的類
           |--ColleagueCheckbox.java 實(shí)現(xiàn)Colleagues接口.表示選擇項(xiàng)目(在此為選擇按鈕)的類
           |--LoginFrame.java 實(shí)現(xiàn)Mediator接口.表示登錄對(duì)話框的類
           步驟:定義顧問接口(Mediator.java)->定義成員接口(Colleague.java)->建立具體的成員類(ColleagueButton.java,ColleagueTextField.java,ColleagueCheckbox.java,實(shí)現(xiàn)成員接口)->建立具體的顧問類(LoginFrame.java,實(shí)現(xiàn)顧問接口)

          6.Memento(備忘錄)-存儲(chǔ)狀態(tài)
           Memento Pattern 會(huì)把某個(gè)時(shí)間點(diǎn)的對(duì)象實(shí)例狀態(tài)記錄存儲(chǔ)起來(lái),等到以后再讓對(duì)象實(shí)例復(fù)原到當(dāng)時(shí)的狀態(tài).
           程序示例:
           |--Main.java 進(jìn)行游戲的類.先把Memento的對(duì)象實(shí)例存儲(chǔ)起來(lái),如有必要時(shí)再?gòu)?fù)原Gamer的狀態(tài)
           |--game
               |-------Gamer.java 玩游戲的主人翁的類
               |-------Memento.java 表示Gamer狀態(tài)的類.產(chǎn)生Memento的對(duì)象實(shí)例
           步驟:建立需要存儲(chǔ)狀態(tài)的類(Gamer.java)->建立狀態(tài)類(Memento.java,狀態(tài)類與需要存儲(chǔ)狀態(tài)的類Gamer.java應(yīng)具有相同的必要字段)

          7.Observer(觀察者)-通知狀態(tài)變化
           當(dāng)被Observer Pattern 列入觀察名單的狀態(tài)發(fā)生變化,就會(huì)通知觀察者.在寫一些跟狀態(tài)變化有關(guān)的處理時(shí),Observer Pattern是很好用的工具.
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Observer.java 表示觀察者的接口
           |--NumberGenerator.java 表示產(chǎn)生數(shù)值對(duì)象的抽象類
           |--RandomNumberGenerator.java 產(chǎn)生隨機(jī)數(shù)的類
           |--DigitObserver.java 以數(shù)字表示數(shù)值的類
           |--GraphObserver.java 以簡(jiǎn)易長(zhǎng)條圖表示數(shù)值的類
           步驟:定義觀察者接口(Observer.java)->建立被觀察的類(NumberGenerator.java,RandomNumberGenerator.java,定義觀察者結(jié)合字段將觀察者存儲(chǔ)起來(lái))->建立具體的觀察者類(DigitObserver.java,GraphObserver.java,實(shí)現(xiàn)觀察者接口)

          8.State(狀態(tài))-以類表示狀態(tài)
           以類來(lái)表示狀態(tài)之后,只要切換類就能表現(xiàn)“狀態(tài)變化”,而且在必須新增其他狀態(tài)時(shí),也很清楚該編寫哪個(gè)部分。
           程序示例:
           |--Main.java 測(cè)試用的類
           |--State.java 表示金庫(kù)狀態(tài)的接口
           |--DayState.java 實(shí)現(xiàn)State的類。表示白天的狀態(tài)
           |--NightState.java 實(shí)現(xiàn)State的類。表示夜間的狀態(tài)
           |--Context.java 管理金庫(kù)的狀態(tài)變化,跟保安中心聯(lián)絡(luò)的接口
           |--SafeFrame.java 實(shí)現(xiàn)Context的類。含有按鈕、畫面顯示等的用戶接口
           步驟:定義狀態(tài)接口(State.java,將使用State Pattern之前各種行為方法抽象出來(lái))->建立具體的狀態(tài)類(DayState.java,NightState.java,實(shí)現(xiàn)狀態(tài)接口,狀態(tài)變化的具體動(dòng)作在這里執(zhí)行)->定義管理狀態(tài)變化的接口(Context.java,規(guī)定狀態(tài)變化及相關(guān)的調(diào)用方法)->建立狀態(tài)管理類(SafeFrame.java,實(shí)現(xiàn)狀態(tài)管理接口)

          9.Strategy(策略)-把算法整個(gè)換掉
           在Strategy Pattern之下,可以更換實(shí)現(xiàn)算法的部分而且不留痕跡。切換整個(gè)算法,簡(jiǎn)化改為采用其他方法來(lái)解決同樣的問題。
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Hand.java 表示猜拳“手勢(shì)”的類
           |--Strategy.java 表示猜拳“戰(zhàn)略”的接口
           |--WinningStrategy.java 表示猜贏之后繼續(xù)出同樣招式的戰(zhàn)略的類
           |--ProbStrategy.java 表示從上一次出的招式,以概率分配方式求出下一個(gè)招式機(jī)率的類
           |--Player.java 表示玩猜拳的游戲者的類
           步驟:定義策略接口(Strategy.java)->建立具體的策略類(WinningStrategy.java,ProbStrategy.java,實(shí)現(xiàn)策略接口)->建立使用策略的類(Player.java,定義策略字段,以便使用切換策略)->建立其它類(Main.java,Hand.java)

          10.Template Method(模板方法)-實(shí)際處理交給子類
           在父類指定處理大綱、在子類規(guī)定具體內(nèi)容的Design Pattern就稱為Template Method Pattern
           程序示例:
           |--Main.java 測(cè)試用的類
           |--AbstractDisplay.java 只實(shí)現(xiàn)方法display的抽象類
           |--CharDisplay.java 實(shí)現(xiàn)方法open,print,close的類
           |--StringDisplay.java 實(shí)現(xiàn)方法open,print,close的類
           步驟:定義模板類(AbstractDisplay.java,實(shí)現(xiàn)dispaly方法,即制作了模板)->建立具體內(nèi)容類(CharDisplay.java,StringDisplay.java,繼承模板類,實(shí)現(xiàn)模板類沒有實(shí)現(xiàn)的方法)

          11.Visitor(訪問者)-在結(jié)構(gòu)中穿梭還同時(shí)做事
           Visitor Pattern 把數(shù)據(jù)結(jié)構(gòu)和處理兩者分開,另外寫一個(gè)表示在數(shù)據(jù)結(jié)構(gòu)內(nèi)穿梭來(lái)去的主體“訪客”的類,然后把處理交給這個(gè)類來(lái)進(jìn)行。如此一來(lái),如果想追加新的處理行為時(shí),只要再建立一個(gè)新的“訪客”即可。而在數(shù)據(jù)結(jié)構(gòu)這邊,也只要能接受來(lái)敲門的“訪客”就能完成動(dòng)作。
           在父類指定處理大綱、在子類規(guī)定具體內(nèi)容的Design Pattern就稱為Template Method Pattern
           程序示例:
           |--Main.java 測(cè)試用的類
           |--Visitor.java 表示訪問文件或目錄的訪客的抽象類
           |--Acceptor.java 表示接受Visitor類的對(duì)象實(shí)例的數(shù)據(jù)結(jié)構(gòu)的接口
           |--ListVisitor.java Visitor類的子類,打印文件和目錄信息的類
           |--Entry.java File和Directory的父類的抽象類(實(shí)現(xiàn)Acceptor接口)
           |--File.java 表示文件的類
           |--Directory.java 表示目錄的類
           |--FileTreatmentException.java 發(fā)生在對(duì)File進(jìn)行add時(shí)的例外類
           步驟:定義訪問者的抽象類(Visitor.java,定義訪問方法)->定義受訪者接口(Acceptor.java,定義接受訪問的方法)->建立具體的訪問者類(ListVisitor.java,繼承訪問者抽象類,實(shí)現(xiàn)訪問方法)->建立具體的受訪者類(Entry.java,File.java,Directory.java,實(shí)現(xiàn)受訪者接口)->編寫異常類(FileTreatmentException.java)

           

          本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/pian_yun/archive/2007/09/14/1784981.aspx

          posted @ 2010-05-28 16:24 小強(qiáng)摩羯座 閱讀(369) | 評(píng)論 (0)編輯 收藏

          直接在html中使用xml導(dǎo)入數(shù)據(jù)

          <xml id="cdcat" src="cd_catalog.xml"></xml>
          <table border="1" datasrc="#cdcat">
            <tr>
              <td><span datafld="ARTIST"></span></td>
              <td><span datafld="TITLE"></span></td>
                <td datafld="price"> </td>
           <td><span datafld="year"></span></td>
            </tr>
          </table>


          注意可以引入xml字段的元素有 限:
          例如,與DIV元素綁定的代碼如下:
           d: U) f1 y
            注意:并非所有的HTML元素都能與XML數(shù)據(jù)島綁定。目前,支持這種DSO綁定機(jī)制的元素如下:. H2 V- _% j! E/ {4 i
          $ \( \$ l" b+ H( M& Y
            A、APPLET、BUTTON、DIV、FRAME、IFRAME、 IMG、INPUT (此處類型是:CHECKBOX、HIDDEN、 LABEL、PASSWORD、RADIO和TEXT)、LABEL、 MARQUEE、SELECT、SPAN、TABLE和 TEXTAREA。

          posted @ 2010-05-27 10:24 小強(qiáng)摩羯座 閱讀(549) | 評(píng)論 (0)編輯 收藏

          H.264中的NAL技術(shù)

          NAL技術(shù)

          1.NAL概述
          NAL全稱Network Abstract Layer, 即網(wǎng)絡(luò)抽象層。
          在H.264/AVC視頻編碼標(biāo)準(zhǔn)中,整個(gè)系統(tǒng)框架被分為了兩個(gè)層面:視頻編碼層面(VCL)和網(wǎng)絡(luò)抽象層面(NAL)。其中,前者負(fù)責(zé)有效表示視頻數(shù)據(jù)的內(nèi)容,而后者則負(fù)責(zé)格式化數(shù)據(jù)并提供頭信息,以保證數(shù)據(jù)適合各種信道和存儲(chǔ)介質(zhì)上的傳輸。
          現(xiàn)實(shí)中的傳輸系統(tǒng)是多樣化的,其可靠性,服務(wù)質(zhì)量,封裝方式等特征各不相同,NAL這一概念的提出提供了一個(gè)視頻編碼器和傳輸系統(tǒng)的友好接口,使得編碼后的視頻數(shù)據(jù)能夠有效地在各種不同的網(wǎng)絡(luò)環(huán)境中傳輸。

          2.NAL單元
          NAL單元是NAL的基本語(yǔ)法結(jié)構(gòu),它包含一個(gè)字節(jié)的頭信息和一系列來(lái)自VCL的稱為原始字節(jié)序列載荷(RBSP)的字節(jié)流。頭信息中包含著一個(gè)可否丟棄的指示標(biāo)記,標(biāo)識(shí)著該NAL單元的丟棄能否引起錯(cuò)誤擴(kuò)散,一般,如果NAL單元中的信息不用于構(gòu)建參考圖像,則認(rèn)為可以將其丟棄;最后包含的是NAL單元的類型信息,暗示著其內(nèi)含有效載荷的內(nèi)容。
          送到解碼器端的NAL單元必須遵守嚴(yán)格的順序,如果應(yīng)用程序接收到的NAL單元處于亂序,則必須提供一種恢復(fù)其正確順序的方法。

          3.NAL實(shí)現(xiàn)編解碼器與傳輸網(wǎng)絡(luò)的結(jié)合
          NAL提供了一個(gè)編解碼器與傳輸網(wǎng)絡(luò)的通用接口,而對(duì)于不同的網(wǎng)絡(luò)環(huán)境,具體的實(shí)現(xiàn)方案是不同的。對(duì)于基于流的傳輸系統(tǒng)如H.320、MPEG等,需要按照解碼順序組織NAL單元,并為每個(gè)NAL單元增加若干比特字節(jié)對(duì)齊的前綴以形成字節(jié)流;對(duì)于RTP/UDP/IP系統(tǒng),則可以直接將編碼器輸出的NAL單元作為RTP的有效載荷;而對(duì)于同時(shí)提供多個(gè)邏輯信道的傳輸系統(tǒng),我們甚至可以根據(jù)重要性將不同類型的NAL單元在不同服務(wù)質(zhì)量的信道中傳輸[2]。

          4.結(jié)論
          為了實(shí)現(xiàn)編解碼器良好的網(wǎng)絡(luò)適應(yīng)性,需要做兩方面的工作:第一、在Codec中將NAL這一技術(shù)完整而有效的實(shí)現(xiàn);第二、在遵循H.264/AVC NAL規(guī)范的前提下設(shè)計(jì)針對(duì)不同網(wǎng)絡(luò)的最佳傳輸方案。如果實(shí)現(xiàn)了以上兩個(gè)目標(biāo),所實(shí)現(xiàn)的就不僅僅是一種視頻編解碼技術(shù),而是一套適用范圍很廣的多媒體傳輸方案,該方案適用于如視頻會(huì)議,數(shù)據(jù)存儲(chǔ),電視廣播,流媒體,無(wú)線通信,遠(yuǎn)程監(jiān)控等多種領(lǐng)域。

          NALU類型

          標(biāo)識(shí)NAL單元中的RBSP數(shù)據(jù)類型,其中,nal_unit_type為1, 2, 3, 4, 5及12的NAL單元稱為VCL的NAL單元,其他類型的NAL單元為非VCL的NAL單元。

          0:未規(guī)定
          1:非IDR圖像中不采用數(shù)據(jù)劃分的片段
          2:非IDR圖像中A類數(shù)據(jù)劃分片段
          3:非IDR圖像中B類數(shù)據(jù)劃分片段
          4:非IDR圖像中C類數(shù)據(jù)劃分片段
          5:IDR圖像的片段
          6:補(bǔ)充增強(qiáng)信息 (SEI)
          7:序列參數(shù)集
          8:圖像參數(shù)集
          9:分割符
          10:序列結(jié)束符
          11:流結(jié)束符
          12:填充數(shù)據(jù)
          13 – 23:保留
          24 – 31:未規(guī)定

          NALU的順序要求

          H.264/AVC標(biāo)準(zhǔn)對(duì)送到解碼器的NAL單元順序是有嚴(yán)格要求的,如果NAL單元的順序是混亂的,必須將其重新依照規(guī)范組織后送入解碼器,否則解碼器不能夠正確解碼。

          1.序列參數(shù)集NAL單元必須在傳送所有以此參數(shù)集為參考的其他NAL單元之前傳送,不過允許這些NAL單元中間出現(xiàn)重復(fù)的序列參數(shù)集NAL單元。所謂重復(fù)的詳細(xì)解釋為:序列參數(shù)集NAL單元都有其專門的標(biāo)識(shí),如果兩個(gè)序列參數(shù)集NAL單元的標(biāo)識(shí)相同,就可以認(rèn)為后一個(gè)只不過是前一個(gè)的拷貝,而非新的序列參數(shù)集。
          2.圖像參數(shù)集NAL單元必須在所有以此參數(shù)集為參考的其他NAL單元之先,不過允許這些NAL單元中間出現(xiàn)重復(fù)的圖像參數(shù)集NAL單元,這一點(diǎn)與上述的序列參數(shù)集NAL單元是相同的。
          3.不同基本編碼圖像中的片段(slice)單元和數(shù)據(jù)劃分片段(data partition)單元在順序上不可以相互交叉,即不允許屬于某一基本編碼圖像的一系列片段(slice)單元和數(shù)據(jù)劃分片段(data partition)單元中忽然出現(xiàn)另一個(gè)基本編碼圖像的片段(slice)單元片段和數(shù)據(jù)劃分片段(data partition)單元。
          4.參考圖像的影響:如果一幅圖像以另一幅圖像為參考,則屬于前者的所有片段(slice)單元和數(shù)據(jù)劃分片段(data partition)單元必須在屬于后者的片段和數(shù)據(jù)劃分片段之后,無(wú)論是基本編碼圖像還是冗余編碼圖像都必須遵守這個(gè)規(guī)則
          5.基本編碼圖像的所有片段(slice)單元和數(shù)據(jù)劃分片段(data partition)單元必須在屬于相應(yīng)冗余編碼圖像的片段(slice)單元和數(shù)據(jù)劃分片段(data partition)單元之前。
          6.如果數(shù)據(jù)流中出現(xiàn)了連續(xù)的無(wú)參考基本編碼圖像,則圖像序號(hào)小的在前面。
          7.如果arbitrary_slice_order_allowed_flag置為1,一個(gè)基本編碼圖像中的片段(slice)單元和數(shù)據(jù)劃分片段(data partition)單元的順序是任意的,如果arbitrary_slice_order_allowed_flag置為零,則要按照片段中第一個(gè)宏塊的位置來(lái)確定片段的順序,若使用數(shù)據(jù)劃分,則A類數(shù)據(jù)劃分片段在B類數(shù)據(jù)劃分片段之前,B類數(shù)據(jù)劃分片段在C類數(shù)據(jù)劃分片段之前,而且對(duì)應(yīng)不同片段的數(shù)據(jù)劃分片段不能相互交叉,也不能與沒有數(shù)據(jù)劃分的片段相互交叉。
          8.如果存在SEI(補(bǔ)充增強(qiáng)信息) 單元的話,它必須在它所對(duì)應(yīng)的基本編碼圖像的片段(slice)單元和數(shù)據(jù)劃分片段(data partition)單元之前,并同時(shí)必須緊接在上一個(gè)基本編碼圖像的所有片段(slice)單元和數(shù)據(jù)劃分片段(data partition)單元后邊。假如SEI屬于多個(gè)基本編碼圖像,其順序僅以第一個(gè)基本編碼圖像為參照。
          9.如果存在圖像分割符的話,它必須在所有SEI 單元、基本編碼圖像的所有片段slice)單元和數(shù)據(jù)劃分片段(data partition)單元之前,并且緊接著上一個(gè)基本編碼圖像那些NAL單元。
          10.如果存在序列結(jié)束符,且序列結(jié)束符后還有圖像,則該圖像必須是IDR(即時(shí)解碼器刷新)圖像。序列結(jié)束符的位置應(yīng)當(dāng)在屬于這個(gè)IDR圖像的分割符、SEI 單元等數(shù)據(jù)之前,且緊接著前面那些圖像的NAL單元。如果序列結(jié)束符后沒有圖像了,那么它的就在比特流中所有圖像數(shù)據(jù)之后。
          11.流結(jié)束符在比特流中的最后。

           

          本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:file:///D:/新建文件夾/桌面/H_264中的NAL技術(shù)%20-%20Bolt%20的專欄%20-%20CSDN博客.htm

          posted @ 2010-05-06 17:58 小強(qiáng)摩羯座 閱讀(331) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共20頁(yè): 1 2 3 4 5 6 7 8 9 下一頁(yè) Last 
          主站蜘蛛池模板: 株洲市| 青阳县| 阳泉市| 红桥区| 资中县| 镇雄县| 钟祥市| 马尔康县| 托里县| 忻城县| 曲水县| 滁州市| 盐池县| 大港区| 大竹县| 夏邑县| 临泽县| 蓬溪县| 西丰县| 蓬莱市| 阿瓦提县| 灵璧县| 乌恰县| 平乡县| 明溪县| 尼玛县| 呼图壁县| 伊金霍洛旗| 揭阳市| 江门市| 汤阴县| 澄城县| 绿春县| 凤庆县| 平乐县| 克什克腾旗| 明溪县| 侯马市| 金阳县| 衡东县| 北京市|