成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#一步一步教你如何去寫面向對象代碼

開發 后端
這是一篇文字較多的文章,建議您仔細閱讀,因為它將完整展示構建一個面向對象代碼的過程,當然這個思想過程是我個人的過程,每個人有自己思考的方式方法,我的僅供參考。

本文以“家庭”為例子,演示如何使用面向對象思維去編寫代碼。

這是一篇文字較多的文章,建議您仔細閱讀,因為它將完整展示構建一個面向對象代碼的過程,當然這個思想過程是我個人的過程,每個人有自己思考的方式方法,我的僅供參考。

一、編寫面向對象,首先要構思

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

那么下面這張圖,是我在紙上畫的構思:

 

C#一步一步教你如何去寫面向對象代碼

 

C#一步一步教你如何去寫面向對象代碼

二、形成你的思路

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

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

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

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

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

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

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

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

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

我們在工作中,對于一個功能開發項,它首要保證的是實現業務需求,所以,我們在做了簡單的建模后(構思即是建模的過程),需要結合實際,看是否滿足需要。

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

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

四、關于對象的方法或者屬性

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

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

五、編碼,我們先寫關系代碼

1.先定義成員關系接口

 

C#一步一步教你如何去寫面向對象代碼

 

C#一步一步教你如何去寫面向對象代碼

2.定義成員關系類型的枚舉

 

C#一步一步教你如何去寫面向對象代碼

 

C#一步一步教你如何去寫面向對象代碼

3.定義關系創建接口

 

C#一步一步教你如何去寫面向對象代碼

 

C#一步一步教你如何去寫面向對象代碼

這里要稍微注意下,這與我的簡單建模規劃的關系思想有些不同,增加了關系創建接口。所以說,我們在實際編碼過程中,針對業務的情況會有偏移,需要進行重構建模。

4.定義成員關系接口的實現類

 

C#一步一步教你如何去寫面向對象代碼

 

C#一步一步教你如何去寫面向對象代碼

這里要特別注意的是,我這里將實現類定義成internal,這就意味著,除了我們自己外,外部調用我們api的人,也就是外部程序員引用我們的dll的話,是無法直接new一個Relation對象的,因為我們把它定義成了內部類。這樣就可以規范外部調用者的行為,指定了他如果想要實例化這個Relation類的話,必須通過其它途徑來實現。

5.定義關系創建類

 

C#一步一步教你如何去寫面向對象代碼

 

C#一步一步教你如何去寫面向對象代碼

這個就是別人想要創建關系時,所必須通過的途徑。因為他無法實例化Relation類,只能通過我的RelationBuilder對象的Create()方法來創建,這就規范了使用我們api的人的行為。

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

1.家庭成員的接口定義

 

C#一步一步教你如何去寫面向對象代碼

 

C#一步一步教你如何去寫面向對象代碼

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

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

 

C#一步一步教你如何去寫面向對象代碼

 

C#一步一步教你如何去寫面向對象代碼

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

 

C#一步一步教你如何去寫面向對象代碼

 

C#一步一步教你如何去寫面向對象代碼

4.最后,我們來定義家庭成員的實現類Member.cs

 

C#一步一步教你如何去寫面向對象代碼

 

C#一步一步教你如何去寫面向對象代碼

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

好了,由于篇幅很長了,所以,關于家庭的接口,我就不再繼續寫了。相信你通過上面兩個例子,也已經學會了,如何去編寫面向對象的代碼思路了。

如果你能學會并運用這個思路,那么我很為你高興。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2009-07-06 19:29:37

云計算私有云服務器虛擬化

2018-03-07 15:24:41

PythonMySQL

2024-07-22 11:43:28

LVMPnetLab網絡

2015-07-30 09:35:24

滑動返回代碼

2009-12-17 08:57:28

Windows 7磁盤分區

2022-08-29 15:19:09

CSS煙花動畫

2017-12-25 11:50:57

LinuxArch Linux

2024-12-02 14:48:30

Docker鏡像文件

2024-09-13 15:20:46

2024-11-18 17:12:18

C#編程.NET

2025-04-08 09:30:00

SeataDocker分布式系統

2024-11-01 11:40:11

2012-03-22 10:33:33

思杰XenDesktop

2017-09-28 09:40:36

圖像分類準確率

2017-08-24 08:31:41

2018-06-11 15:30:12

2017-11-29 11:14:52

離線緩存URL協議緩存

2011-06-07 16:03:48

匿名SQL Server

2013-03-18 16:09:27

JavaEEOpenfire

2019-09-18 07:20:34

深度學習人臉識別人工智能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天看天天爽 | 午夜精品久久久久久久久久久久久 | 亚洲精品一区中文字幕 | 久久久久久av | 日韩精品无码一区二区三区 | 久久精品成人 | av一级久久 | 国产一区二区视频在线观看 | 中文字幕高清视频 | 99色在线视频 | 精品国产乱码一区二区三区 | 中文字幕亚洲一区 | 国产h视频| 国产区精品在线观看 | www.国产精品 | 在线免费看黄 | 国产精品视频导航 | 国产区在线免费观看 | 夜夜爽夜夜操 | 国产精品视频www | 欧美日韩大陆 | 精品一区二区三区四区五区 | 毛片一级黄色 | 中文字幕在线观看 | 欧美视频成人 | 91精品国产手机 | 大乳boobs巨大吃奶挤奶 | 7777精品伊人久久精品影视 | 成人h动漫亚洲一区二区 | 日本小视频网站 | 一本色道久久综合亚洲精品高清 | 日韩欧美在线视频 | 国产日韩亚洲欧美 | 国产精品99久久久久久久vr | 黄a大片 | 韩日精品一区 | 成人一区av偷拍 | 欧美中文字幕一区 | 日日草夜夜草 | 成人看片在线观看 | 中文字幕一区在线 |