对于 .Net 中的编程思想还是十分重要的,也是编码出高效的程序的基础!
在使用之前了解其本质,那么用起来就游刃有余。下面来简单对比下三个编程思想,看下它们都是什么,它们之间又有什么关系。
稍等,在介绍主角之前呐,先来了解下它们思想的基础是怎么回事。
对象
万事万物皆为对象。我们生活中的每一件东西都可以看作是一个对象,包括我们本身都是一个对象。
这是一种抽象的思想,我们将一件事物提取出特征和行为,将特征定义为属性,将行为封装成方法。
如,一个人,特征有姓名、年龄、性别、职业等等,行为有吃饭、睡觉、学习等等。
接口
接口声明了属性、方法和事件,这些都是接口的成员。
在 C# 8.0 之前,接口只包含成员的声明而不关心成员的实现,只是提供派生类实现的标准结构。在此之后时代变了,接口也可以拥有自己的带实现的方法,而且在未实现此方法的派生类中不能调用。
过程
顾名思义,就是广义上的一件事,通过一系列对象,按照顺序,执行一系列动作,从开始到完成的集合。
面向对象编程(Object Oriented Programming:OOP),侧重点在对象,解决一个问题时,先将问题中的包含的事物抽象成对象概念,对象中包含具体的属性和行为,真正执行时再让每个对象去执行自己的某些方法,从而解决问题。
举个例子说明:
就拿日常洗手这个流程吧,简单点,水冲一下就好。
其中涉及的对象有:手、水龙头、水、毛巾。
然后就是执行:
通过上边的例子知道,面向对象编程的方式,就是先将事件中的实体抽象成具体的对象,然后再将属性和方法封装到对象中,最后通过不同的对象执行相应的方法完成事件。
面向过程编程(Procedure Oriented Programming:POP),侧重点在过程。解决一个事件的时候,先分析出处理这个事件需要的步骤,然后使用方法将这些步骤一步步实现,然后处理事件的时候,按照一定的顺序执行这些方法,全部执行一遍后事件就完成了。
还是上边那个洗手的例子:
面向过程,就需要先把吸收这个事件分步骤:
通过以上四步,完成洗手这个事件。
通过上边的例子知道,面向过程编程的思想在处理事件时,将整个事件拆分成一个个步骤,每个步骤封装成对应的函数,然后按照某个顺序去执行,来完成事件。
面向接口编程(Interface Oriented Programming:OIP)是一种编程思想。接口作为实体抽象出来的一种表现形式,用于分离内部实现和外部沟通,最终达到内部变动而不影响外部与其他实现交互的目的。可以理解成,按照这种思想来设计编程的方式称为面向接口编程。
面向接口编程归属于面向对象编程。它是属于面向对象思想体系中的一部分,或者说它是面向对象编程体系中的思想精髓之一。
还是关于洗手的例子:
有了这两个接口,不管是谁、那个地方、那个国家的手或者水龙头,都可以实现上边两个接口,然后轻松完成洗手这个事件。
当然,以后如果科技发达了,不用水洗手了,直接用水龙头一照就可以了,那么我们就可以在水龙头接口里边,添加一个包含实现的方法(在 C# 8.0 之后可实现),这样也就不用担心已经实现了水龙头的类出错。
通过上边的例子知道,接口可以把某一类对象的统一属性和方法,声明在一起,然后实体类再来是现接口中的全部声明,然后在通过这个类实例化出具体的对象。这样就形成了高内聚低耦合、提高了可维护性,从而降低系统维护成本。
面向对象编程
适用于用户需求经常变化,性能要求不算最高的系统开发。
面向过程编程
适用于性能要求较高的系统开发。
面向接口编程
参考:https://zhuanlan.zhihu.com/p/407548596 https://zhuanlan.zhihu.com/p/75265007 https://blog.csdn.net/wantken/article/details/31763669