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烟花动画

2024-11-18 17:12:18

C#编程.NET

2024-09-13 15:20:46

2024-12-02 14:48:30

Docker镜像文件

2017-12-25 11:50:57

LinuxArch Linux

2012-03-22 10:33:33

思杰XenDesktop

2024-11-01 11:40:11

2017-09-28 09:40:36

图像分类准确率

2018-06-11 15:30:12

2017-08-24 08:31:41

2011-06-07 16:03:48

匿名SQL Server

2017-11-29 11:14:52

离线缓存URL协议缓存

2013-03-18 16:09:27

JavaEEOpenfire

2019-09-18 07:20:34

深度学习人脸识别人工智能

2020-02-26 08:00:02

14点遭遇真凶
点赞
收藏

51CTO技术栈公众号