<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      歡迎光臨湯雪華的博客

      一個(gè)人一輩子能堅(jiān)持做好一件事情就夠了!堅(jiān)持是一種刻意的練習(xí),不斷尋找缺點(diǎn)突破缺點(diǎn)的過程,而不是重復(fù)做某件事情。
        博客園  :: 首頁  :: 新隨筆  :: 聯(lián)系 :: 訂閱 訂閱  :: 管理

      最近對(duì)OO的理解又有了一些新的認(rèn)識(shí),拿出來和大家分享一下。為了能讓大家簡單直觀清晰的知道我想表達(dá)的主要意思,我不說廢話了。直接提出問題,然后回答。

      1. 什么是真正的對(duì)象?
      2. 什么是面向?qū)ο蠓治鲭A段時(shí)的對(duì)象? 
      3. 什么是面向?qū)ο笤O(shè)計(jì)階段時(shí)的對(duì)象?
      4. 什么是面向?qū)ο髮?shí)現(xiàn)階段時(shí)的對(duì)象?

      真正的對(duì)象

      我所理解的真正的對(duì)象就是現(xiàn)實(shí)生活中客觀存在或不存在的真正的對(duì)象。這個(gè)對(duì)象有一個(gè)明顯的特征就是它具有非常多的狀態(tài)特征和行為特征。比如一個(gè)人是一個(gè)對(duì)象,他在一生中會(huì)經(jīng)歷無數(shù)個(gè)交互場景,在這個(gè)過程中,每個(gè)人的行為特征會(huì)不斷增多,大部分行為是通過后天學(xué)習(xí)得到的,只有少數(shù)行為是先天就具有的;另一方面,對(duì)于狀態(tài)特征也是在時(shí)不時(shí)的變化,比如你的身高、體重,等等。最后,人因?yàn)闀?huì)參與到不同的交互場景,會(huì)導(dǎo)致和他關(guān)聯(lián)的各種關(guān)聯(lián)信息也會(huì)不斷增多,比如你去上大學(xué),老師給你一張借書卡,此時(shí)你就擁有了一張借書卡,可以理解為你多了一個(gè)關(guān)聯(lián)信息;哪一天你去參加英語四級(jí)考試,考了70分,然后你擁有了一本四級(jí)考試證書,上面寫這成績?yōu)?0分,此時(shí)你也同樣多了一個(gè)關(guān)聯(lián)信息,就是一本英語四級(jí)考試證書;

      這里我想表達(dá)的主要觀點(diǎn)是:現(xiàn)實(shí)生活中的對(duì)象:1)兼具各種場景下的所有狀態(tài)和行為特征;2)固有狀態(tài)會(huì)時(shí)不時(shí)的變化,通過參與交互場景還會(huì)增加一些關(guān)聯(lián)信息;3)行為會(huì)不斷增多,一般是通過學(xué)習(xí)得到;因此,我們從中可以知道,現(xiàn)實(shí)生活中的對(duì)象肯定不是我們?cè)O(shè)計(jì)軟件時(shí)候的對(duì)象,因?yàn)樗侨绱说膹?fù)雜,包含了或關(guān)聯(lián)了非常多的狀態(tài)特征和行為特征;

      面向?qū)ο蠓治鲭A段時(shí)的對(duì)象

      既然是分析階段,那我們就不要過多的考慮任何設(shè)計(jì)階段的思想。我覺得在分析階段,我們?cè)诜治鰧?duì)象時(shí)主要考慮兩個(gè)方面:1)對(duì)象的狀態(tài)特征變化規(guī)律;2)對(duì)象的行為特征變化規(guī)律;分析階段,我們往往從某個(gè)場景出發(fā),分析該場景中有哪些“對(duì)象”,此時(shí)的“對(duì)象”之所以加雙引號(hào)是因?yàn)樗皇钦嬲膶?duì)象,而是真正的對(duì)象的某個(gè)方面,我們?cè)谀硞€(gè)場景下只關(guān)心對(duì)象的某個(gè)方面;我覺得分析階段的對(duì)象和現(xiàn)實(shí)生活中的對(duì)象應(yīng)該是一致的,或者至少是邏輯上是一致的。也就是說,在面向?qū)ο蟮姆治鲭A段,我們應(yīng)該將現(xiàn)實(shí)生活中我們所理解的對(duì)象的一切特征在腦子里描述清楚。比如同一個(gè)人,它在不同的場景下(一個(gè)場景代表了一個(gè)考慮問題的邊界)會(huì)參與不同的交互活動(dòng)。 這句話體現(xiàn)的含義是:1)同一個(gè)對(duì)象會(huì)參與不同的場景,行駛各種交互行為;2)同一個(gè)對(duì)象我們會(huì)根據(jù)我們不同的認(rèn)識(shí)角度,對(duì)同一個(gè)對(duì)象的關(guān)注角度的不同,將其理解為不同的類型或角色;比如一個(gè)人,在家里可能是父親,在公司可能是職員,在比賽場上可能是運(yùn)動(dòng)員。但無論我們給這個(gè)人授予什么樣的稱謂,這個(gè)人始終是同一個(gè)對(duì)象。所以,在面向?qū)ο蟮姆治鲭A段,對(duì)象給我們的感覺是它在不停的變換其類型或角色;上面在談到什么是真正的現(xiàn)實(shí)生活中的對(duì)象時(shí)提到,對(duì)象在參與到交互活動(dòng)后會(huì)多出一些關(guān)聯(lián)信息,這些信息是屬于誰的呢?答案是:這些信息屬于扮演了某個(gè)角色的對(duì)象的;之所以強(qiáng)調(diào)扮演了某個(gè)角色,是因?yàn)橄胱尨蠹颐鞔_對(duì)象一定是在扮演某個(gè)角色參與到某個(gè)場景交互活動(dòng)后才具有那些關(guān)聯(lián)信息的。總結(jié):我覺得在面向?qū)ο蟮姆治鲭A段,我們分析的要點(diǎn)是:1)站在現(xiàn)實(shí)生活中真正的對(duì)象的角度去理解對(duì)象的狀態(tài)特征和行為特征的變化規(guī)律;2)理解真正的對(duì)象和對(duì)象的某一個(gè)方面(即我們所關(guān)心的“對(duì)象”),3)理解同一個(gè)對(duì)象會(huì)扮演不同角色參與到不同交互場景;4)理解對(duì)象的關(guān)聯(lián)信息如何產(chǎn)生,關(guān)聯(lián)信息是屬于誰的;

      面向?qū)ο笤O(shè)計(jì)階段時(shí)的對(duì)象

      首先說一下,目前的編程語言實(shí)現(xiàn)對(duì)象時(shí),是以哪些方式讓創(chuàng)建對(duì)象的。1)C#等基于類型的靜態(tài)語言,類型規(guī)定了對(duì)象可以具有的狀態(tài)特征和行為特征,對(duì)象的一切狀態(tài)和行為都是由其所屬的類型確定的;這又一個(gè)很明顯的好處時(shí),我們?cè)谌魏螘r(shí)候都知道對(duì)象的類型或接口,從而就能明確知道其數(shù)據(jù)結(jié)構(gòu),也就知道對(duì)象的狀態(tài),從而可以方便的持久化對(duì)象的狀態(tài)或者重建對(duì)象;但這種為對(duì)象帶來狀態(tài)和行為特征的設(shè)計(jì)思路同時(shí)也有一個(gè)缺點(diǎn)就是對(duì)象的類型或其表現(xiàn)出來的接口無法更改。這點(diǎn)是違背“真正的對(duì)象”或者“分析階段的對(duì)象”的特征的;2)javascript等弱類型的動(dòng)態(tài)語言,這種語言認(rèn)為對(duì)象無類型,對(duì)象的狀態(tài)和行為不需要從類型為模板獲取,狀態(tài)和行為可以隨時(shí)附加到某個(gè)對(duì)象上。這種思路其實(shí)很好,因?yàn)楹芊仙厦嫣岬降恼嬲膶?duì)象的狀態(tài)特征與行為特征的變化規(guī)律。但是這種語言也有一些致命的缺點(diǎn):1)由于沒有類型,導(dǎo)致無法在使用時(shí)明確知道其具有哪些狀態(tài)和行為,這會(huì)增加編程出錯(cuò)的可能性,只有在運(yùn)行階段在會(huì)檢測到訪問了不存在的狀態(tài)或行為;2)同樣是弱類型的原因,對(duì)象無法被持久化,因?yàn)椴恢酪志没男顟B(tài),同樣,更不用說重建對(duì)象了;所以,基于這兩個(gè)缺點(diǎn),我覺得動(dòng)態(tài)語言不適合在服務(wù)器端大量使用去做工程實(shí)現(xiàn)業(yè)務(wù)邏輯,而在一些不需要持久化對(duì)象狀態(tài)的客戶端環(huán)境,只在內(nèi)存中處理邏輯的情況下使用這種語言比較適合;

      當(dāng)我們?cè)谠O(shè)計(jì)軟件時(shí),如果是用C#等靜態(tài)語言、基于類和接口的語言去設(shè)計(jì)對(duì)象時(shí),該如何設(shè)計(jì)呢?在設(shè)計(jì)階段,我覺得目標(biāo)就是把分析階段得到的對(duì)象用盡量平滑的方式轉(zhuǎn)換為設(shè)計(jì);需要把握的要點(diǎn)是:1)從一個(gè)基本的類創(chuàng)建出對(duì)象;2)用盡量平滑的設(shè)計(jì)思路去支持一個(gè)對(duì)象表現(xiàn)出不同類型或角色的特點(diǎn);舉個(gè)例子吧:

      var xuehua = new Person();
      xuehua.Eat(); 
      //吃飯
      var teacher = xuehua.ActAs<ITeacher>();//扮演教師角色
      teacher.Teach(); //教書

      xuehua這個(gè)對(duì)象首先是一個(gè)人,所以從Person這個(gè)基本類型中獲取基本的狀態(tài)特征和行為特征(如吃飯);然后當(dāng)xuehua去教書時(shí),他會(huì)扮演教師的角色,扮演之后他就是一個(gè)教師了,然后他就具有了教師這個(gè)角色所賦予的行為(教書)了。上面的代碼看上去和真正的對(duì)象在現(xiàn)實(shí)生活中的變化規(guī)律類似,非常平滑;這樣做有幾個(gè)好處:1)強(qiáng)類型;2)對(duì)象交互模型與現(xiàn)實(shí)生活中的交互模型完全一致,所以代碼非常容易懂,可讀性強(qiáng);3)對(duì)象不會(huì)隨著參與交互場景的增多而變得臃腫和復(fù)雜,因?yàn)橛捎谝肓私巧母拍睿覀儗⒔换ツP蛯?shí)現(xiàn)為對(duì)象扮演某個(gè)角色參與交互活動(dòng)的方式來設(shè)計(jì),做到了對(duì)象動(dòng)態(tài)被賦予身份,從而具有與該身份相關(guān)的狀態(tài)特征和行為特征;4)對(duì)象參與交互場景后所關(guān)聯(lián)的一些關(guān)聯(lián)信息不會(huì)直接存放在對(duì)象上,而是放在了“扮演了某個(gè)角色的對(duì)象”上,在上面的例子中就是teacher對(duì)象;

      面向?qū)ο髮?shí)現(xiàn)階段時(shí)的對(duì)象

      那么如何實(shí)現(xiàn)這樣的設(shè)計(jì)呢?

      var teacher = xuehua.ActAs<ITeacher>(); 

      其實(shí)很簡單,可以類用裝飾模式來實(shí)現(xiàn),我們都知道,設(shè)計(jì)模式中的裝飾模式可以動(dòng)態(tài)給一個(gè)對(duì)象增加狀態(tài)或行為。所以在實(shí)現(xiàn)階段,我們可以設(shè)計(jì)一個(gè)Teacher類,大概設(shè)計(jì)如下:

      public class Teacher : ITeacher
      {
          
      private Person actor;

          
      public Teacher(Person actor)
          {
              
      this.actor = actor;
          }

          
      public void Teach()
          {
              
      //do the teach operation.
          }

      teacher就是實(shí)現(xiàn)階段的對(duì)象,而Teacher類則是實(shí)現(xiàn)階段的對(duì)象的類型;可以看到Teacher類關(guān)聯(lián)了一個(gè)Person對(duì)象,同時(shí)實(shí)現(xiàn)了ITeacher角色接口。所以ActAs,

      var teacher = xuehua.ActAs<ITeacher>();

      這個(gè)函數(shù)做的事情就是在內(nèi)部創(chuàng)建一個(gè)Teacher類的實(shí)例,該實(shí)例對(duì)當(dāng)前的Person對(duì)象有一個(gè)引用,然后返回。也許你會(huì)說,返回回來的teacher對(duì)象已經(jīng)不是原來的xuehua對(duì)象了,而是一個(gè)新的對(duì)象,并且封裝了xuehua這個(gè)對(duì)象;沒錯(cuò),所以說這是實(shí)現(xiàn)上的問題。我們?cè)陉P(guān)注業(yè)務(wù)時(shí),關(guān)心的不是當(dāng)前對(duì)象的真正類型,而是關(guān)心對(duì)象的狀態(tài)特征、行為特征,或者技術(shù)化一點(diǎn)來講就是關(guān)心對(duì)象的交互模型,關(guān)心的是對(duì)象扮演什么角色在進(jìn)行交互。

      好了,就說這么多吧,下午要去參加知識(shí)分享。希望我的文章能帶給大家一些啟發(fā)。 

      主站蜘蛛池模板: 国产精品中文字幕在线看| 日韩区中文字幕在线观看| 久久一夜天堂av一区二区| 亚洲国产成人久久综合野外 | 一本一道av无码中文字幕麻豆| 久久无码中文字幕免费影院蜜桃| 国产成人a在线观看视频免费| 国产精品成人无码久久久| 动漫av网站免费观看| 四虎在线成人免费观看| 疯狂做受xxxx高潮欧美日本| 91一区二区三区蜜桃臀| 亚洲中文字幕乱码电影| 无码日韩做暖暖大全免费不卡| 一区二区三区无码免费看| 丁香婷婷色综合激情五月| 国产精品无码aⅴ嫩草| 国内视频偷拍久久伊人网| 中文字幕无码av不卡一区| 国内精品免费久久久久电影院97| 夜色福利站WWW国产在线视频| 米林县| 国产成人高清在线重口视频| 久久午夜无码鲁丝片直播午夜精品| 精品人妻人人做人人爽| 老鸭窝在线视频| 视频一区视频二区视频三区| 日本亚洲欧洲无免费码在线 | 久久涩综合一区二区三区| 日韩精品国产中文字幕| 成年女人免费碰碰视频| av日韩在线一区二区三区| a级黑人大硬长爽猛出猛进| 日韩av无码中文无码电影| 亚洲精品码中文在线观看| 日韩人妻精品中文字幕| 国产成人小视频| 国产极品粉嫩尤物一线天| 国产日韩av二区三区| 国产高潮国产高潮久久久| 国产成人精品视频国产|