设计模式之美笔记 —— 面向对象编程和面向过程编程的区别

设计模式之美-06设计模式之美-07

目录

一、什么是面向过程和面向对象编程:

二、面向对象(OOP)编程相对于面向过程编程的优势:

1、OOP更适合复杂的程序开发

2、OOP代码更易 复用,扩展 和 维护

三、在实际设计过程中,哪些常见的设计属于面向过程变成的:

1、滥用getter 和 setter方法

2、设置大而全Utils类和constant类

3、定义数据和方法分离的类(VO,DTO等数据分层)


一、什么是面向过程和面向对象编程:

面向过程编程:是一种编程范式或编程风格。它以过程(可以理解为方法、函数、操作)作为组织代码的基本单元,以数据(可以理解为成员变量、属性)与方法相分离为最主要的特点。面向过程风格是一种流程化的编程风格,通过拼接一组顺序执行的方法来操作数据完成一项功能。

面向对象编程:也是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。

面向过程风格的代码被组织成了一组方法集合及其数据结构(struct User),方法和数据结构的定义是分开的。面向对象风格的代码被组织成一组类,方法和数据结构被绑定一起,定义在类中。

 

二、面向对象(OOP)编程相对于面向过程编程的优势:

1、OOP更适合复杂的程序开发

有的时候,面向过程的编程风格反倒更有优势。因为需求足够简单,整个程序的处理流程只有一条主线,很容易被划分成顺序执行的几个步骤,然后逐句翻译成代码,这就非常适合采用面向过程这种面条式的编程风格来实现。

对于大规模复杂程序的开发来说,整个程序的处理流程错综复杂,并非只有一条主线。如果把整个程序的处理流程画出来的话,会是一个网状结构。如果我们再用面向过程编程这种流程化、线性的思维方式,去翻译这个网状结构,去思考如何把程序拆解为一组顺序执行的方法,就会比较吃力。这个时候,面向对象的编程风格的优势就比较明显了。

面向对象编程是以类为思考对象。在进行面向对象编程的时候,我们并不是一上来就去思考,如何将复杂的流程拆解为一个一个方法,而是采用曲线救国的策略,先去思考如何给业务建模,如何将需求翻译为类,如何给类之间建立交互关系,而完成这些工作完全不需要考虑错综复杂的处理流程。当我们有了类的设计之后,然后再像搭积木一样,按照处理流程,将类组装起来形成整个程序。

2、OOP代码更易 复用,扩展 和 维护

  • 封装特性:将数据和方法绑定在一起,通过访问权限控制,只允许外部调用者通过类暴露的有限方法访问数据,而不会像面向过程编程那样,数据可以被任意方法随意修改。因此,面向对象编程提供的封装特性更有利于提高代码的易维护性。
  • 抽象:面向接口的抽象,可以在不改变交互方式的情况下,修改实现逻辑,从而更易扩展
  • 多态:通过子类继承父类的方式,在子类中重写父类的功能逻辑,而不是在原有的代码上做修改,这就遵从了“开放闭合”的设计原则,提高了代码的扩展性。除此之外,利用多态特性,不同的类对象可以传递给相同的方法,执行不同的代码逻辑,提高了代码的复用性。

 

三、在实际设计过程中,哪些常见的设计属于面向过程变成的:

1、滥用getter 和 setter方法

        注意保护类中那些字段是不可以被外界修改的,注意保护字段的修改权限,

2、设置大而全Utils类和constant类

         谨慎使用全局变量和全局方法

3、定义数据和方法分离的类(VO,DTO等数据分层)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值