自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

一、編寫面向?qū)ο螅紫纫獦?gòu)思

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

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

 

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

 

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

二、形成你的思路

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

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

家庭,就要有家庭成員,所以,我可能會有一個IMember的接口。

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

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

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

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

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

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

我們在工作中,對于一個功能開發(fā)項(xiàng),它首要保證的是實(shí)現(xiàn)業(yè)務(wù)需求,所以,我們在做了簡單的建模后(構(gòu)思即是建模的過程),需要結(jié)合實(shí)際,看是否滿足需要。

那么我們看“家庭”這個例子,由于我是舉例子,所以它目前的簡單建模可能是正確的。暫時也不需要加其它的需求了。

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

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

我個人的習(xí)慣是簡單建模出整體框架后,就開始寫代碼了。

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

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

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

 

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

 

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

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

 

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

 

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

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

 

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

 

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

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

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

 

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

 

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

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

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

 

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

 

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

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

六、編碼,我們編寫家庭成員和個性的代碼

1.家庭成員的接口定義

 

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

 

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

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

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

 

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

 

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

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

 

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

 

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

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

 

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

 

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

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

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

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

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(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

滑動返回代碼

2009-12-17 08:57:28

Windows 7磁盤分區(qū)

2017-12-25 11:50:57

LinuxArch Linux

2022-08-29 15:19:09

CSS煙花動畫

2024-11-18 17:12:18

C#編程.NET

2024-11-01 11:40:11

2025-04-08 09:30:00

SeataDocker分布式系統(tǒng)

2024-09-13 15:20:46

2024-12-02 14:48:30

Docker鏡像文件

2017-09-28 09:40:36

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

2012-03-22 10:33:33

思杰XenDesktop

2017-11-29 11:14:52

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

2018-06-11 15:30:12

2017-08-24 08:31:41

2013-03-18 16:09:27

JavaEEOpenfire

2011-06-07 16:03:48

匿名SQL Server

2019-09-18 07:20:34

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

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