偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

開(kāi)發(fā) 后端
這是一篇文字較多的文章,建議您仔細(xì)閱讀,因?yàn)樗鼘⑼暾故緲?gòu)建一個(gè)面向?qū)ο蟠a的過(guò)程,當(dāng)然這個(gè)思想過(guò)程是我個(gè)人的過(guò)程,每個(gè)人有自己思考的方式方法,我的僅供參考。

本文以“家庭”為例子,演示如何使用面向?qū)ο笏季S去編寫(xiě)代碼。

這是一篇文字較多的文章,建議您仔細(xì)閱讀,因?yàn)樗鼘⑼暾故緲?gòu)建一個(gè)面向?qū)ο蟠a的過(guò)程,當(dāng)然這個(gè)思想過(guò)程是我個(gè)人的過(guò)程,每個(gè)人有自己思考的方式方法,我的僅供參考。

一、編寫(xiě)面向?qū)ο?,首先要?gòu)思

構(gòu)思一般隨意,你可以在自己腦海中構(gòu)思,也可以借助專業(yè)的UML來(lái)構(gòu)思,又或者借助紙筆構(gòu)思,總之,一切隨意,只要你喜歡。

那么下面這張圖,是我在紙上畫(huà)的構(gòu)思:

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

二、形成你的思路

通過(guò)構(gòu)思,你可以慢慢的理清、形成自己的代碼思路。

回到“家庭”這個(gè)例子,我當(dāng)時(shí)是這么思考的:

家庭,就要有家庭成員,所以,我可能會(huì)有一個(gè)IMember的接口。

然后我想到家庭成員之間存在一定的關(guān)系,比如父與子、母與子等關(guān)系,于是有了IRelation接口。

接著我就想到了家庭屬性,家庭應(yīng)該是獨(dú)特的,自己的定義,所以就有了Family,有了Family,我就想到了應(yīng)該抽象成IFamily,而IFamily很可能會(huì)有家庭名稱、人員列表等屬性或者方法定義。

再然后我回顧之前的思路,想到關(guān)系會(huì)有多種類(lèi)型,它可能會(huì)是個(gè)枚舉,所以就有RelationTypes枚舉對(duì)象。

那有了關(guān)系,可能需要一個(gè)關(guān)系管理類(lèi)來(lái)管理它。所以,我就有了RelationManager類(lèi)。

最后我又思考到了家庭成員,每個(gè)成員都有自己的個(gè)性。而個(gè)性是復(fù)雜,不一定是單一的,比如有些成員好動(dòng)而熱情,比如爸爸面冷心熱等。于是我想個(gè)性應(yīng)該是個(gè)具有Flags標(biāo)簽的枚舉,允許一個(gè)成員具有多重個(gè)性。

三、檢查回顧,并理解你的需求是否滿足

我們?cè)诠ぷ髦?,?duì)于一個(gè)功能開(kāi)發(fā)項(xiàng),它首要保證的是實(shí)現(xiàn)業(yè)務(wù)需求,所以,我們?cè)谧隽撕?jiǎn)單的建模后(構(gòu)思即是建模的過(guò)程),需要結(jié)合實(shí)際,看是否滿足需要。

那么我們看“家庭”這個(gè)例子,由于我是舉例子,所以它目前的簡(jiǎn)單建??赡苁钦_的。暫時(shí)也不需要加其它的需求了。

但現(xiàn)在覺(jué)得沒(méi)有問(wèn)題的建模,在實(shí)際編寫(xiě)代碼后,可能會(huì)面臨實(shí)際項(xiàng)目中,我們尚未考慮到的點(diǎn),這時(shí)就需要不斷迭代建模。直到你的思維準(zhǔn)確為止。

四、關(guān)于對(duì)象的方法或者屬性

我個(gè)人的習(xí)慣是簡(jiǎn)單建模出整體框架后,就開(kāi)始寫(xiě)代碼了。

可能有的人,做事較為細(xì)致,在構(gòu)建階段,就會(huì)想要事先定義好每一個(gè)對(duì)象的方法或者屬性,這也是可以的??茨?xí)慣和喜歡。

五、編碼,我們先寫(xiě)關(guān)系代碼

1.先定義成員關(guān)系接口

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

2.定義成員關(guān)系類(lèi)型的枚舉

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

3.定義關(guān)系創(chuàng)建接口

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

這里要稍微注意下,這與我的簡(jiǎn)單建模規(guī)劃的關(guān)系思想有些不同,增加了關(guān)系創(chuàng)建接口。所以說(shuō),我們?cè)趯?shí)際編碼過(guò)程中,針對(duì)業(yè)務(wù)的情況會(huì)有偏移,需要進(jìn)行重構(gòu)建模。

4.定義成員關(guān)系接口的實(shí)現(xiàn)類(lèi)

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

這里要特別注意的是,我這里將實(shí)現(xiàn)類(lèi)定義成internal,這就意味著,除了我們自己外,外部調(diào)用我們api的人,也就是外部程序員引用我們的dll的話,是無(wú)法直接new一個(gè)Relation對(duì)象的,因?yàn)槲覀儼阉x成了內(nèi)部類(lèi)。這樣就可以規(guī)范外部調(diào)用者的行為,指定了他如果想要實(shí)例化這個(gè)Relation類(lèi)的話,必須通過(guò)其它途徑來(lái)實(shí)現(xiàn)。

5.定義關(guān)系創(chuàng)建類(lèi)

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

這個(gè)就是別人想要?jiǎng)?chuàng)建關(guān)系時(shí),所必須通過(guò)的途徑。因?yàn)樗麩o(wú)法實(shí)例化Relation類(lèi),只能通過(guò)我的RelationBuilder對(duì)象的Create()方法來(lái)創(chuàng)建,這就規(guī)范了使用我們api的人的行為。

六、編碼,我們編寫(xiě)家庭成員和個(gè)性的代碼

1.家庭成員的接口定義

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

我們會(huì)看到家庭成員接口只定義了全名和性別2個(gè)屬性,但是家庭成員是有個(gè)性的,為什么不放在一起寫(xiě)呢?這就是面向?qū)ο蟮慕涌诟綦x原則,你可以參考我的前面文章,有一篇單獨(dú)講“接口隔離原則”的。

2.家庭成員的個(gè)性枚舉,注意個(gè)性是多重的,所以,我們的枚舉要定義成Flags

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

3.然后我們定義一個(gè)家庭成員的個(gè)性接口

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

4.最后,我們來(lái)定義家庭成員的實(shí)現(xiàn)類(lèi)Member.cs

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

 

C#一步一步教你如何去寫(xiě)面向?qū)ο蟠a

注意看這個(gè)成員實(shí)現(xiàn)類(lèi),它實(shí)現(xiàn)了兩個(gè)接口,分別是IMember和ICharacter。我們定義了它的構(gòu)造函數(shù),帶有fullName和sex兩個(gè)參數(shù),所有public的公開(kāi)屬性都是只讀的,這意味著別人只能訪問(wèn)而無(wú)法修改。開(kāi)放了設(shè)置個(gè)性的方法SetCharacter()。

好了,由于篇幅很長(zhǎng)了,所以,關(guān)于家庭的接口,我就不再繼續(xù)寫(xiě)了。相信你通過(guò)上面兩個(gè)例子,也已經(jīng)學(xué)會(huì)了,如何去編寫(xiě)面向?qū)ο蟮拇a思路了。

如果你能學(xué)會(huì)并運(yùn)用這個(gè)思路,那么我很為你高興。

責(zé)任編輯:未麗燕 來(lái)源: 今日頭條
相關(guān)推薦

2009-07-06 19:29:37

云計(jì)算私有云服務(wù)器虛擬化

2018-03-07 15:24:41

PythonMySQL

2024-07-22 11:43:28

LVMPnetLab網(wǎng)絡(luò)

2015-07-30 09:35:24

滑動(dòng)返回代碼

2009-12-17 08:57:28

Windows 7磁盤(pán)分區(qū)

2017-12-25 11:50:57

LinuxArch Linux

2022-08-29 15:19:09

CSS煙花動(dòng)畫(huà)

2025-04-08 09:30:00

SeataDocker分布式系統(tǒng)

2024-11-01 11:40:11

2024-11-18 17:12:18

C#編程.NET

2017-09-28 09:40:36

圖像分類(lèi)準(zhǔn)確率

2024-09-13 15:20:46

2024-12-02 14:48:30

Docker鏡像文件

2012-03-22 10:33:33

思杰XenDesktop

2017-11-29 11:14:52

離線緩存URL協(xié)議緩存

2013-03-18 16:09:27

JavaEEOpenfire

2018-06-11 15:30:12

2017-08-24 08:31:41

2011-06-07 16:03:48

匿名SQL Server

2019-09-18 07:20:34

深度學(xué)習(xí)人臉識(shí)別人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)