1.1、面对过程编码
1.1.1、什么是面对过程编码?
面对过程,字面分析主要在于过程二字,只关心的是某一需求的实现过程,把某一个需求拆分成一个个的事件来分步骤解决即可。 如: 我需要开我的车到公司, 可拆分为,找到我的车,将车启动,开车到公司,熄火下车。将这些事件一件件的实现即可。
1.1.2、为什么会有面对过程编码
人类的处事习惯是,将某件困难的事情,拆分成一系列的简单的事情来处理,再按照一定的完成顺序来执行,最终达到解决事情的目的。这种思想也是解决问题最直接的方式,因此再过去被广泛的使用并抽象出来了这种思想。
1.1.3、怎么实现面对过程编码
a、将事件拆分成一件件单一而简单小事件,并按照一定的顺序进行处理
b、画出程序流程图以及数据流向图,直观的表达出事件的处理逻辑
c、在程序中实现每个流程,并按照流向图,调用对应的函数,串联起整个事件,完成事件
1.1.4、面对过程编程的优缺点
a、优点:
1、逻辑简单明了,串联完成整件事件。
2、符合一个重要的解决问题的思想,分治思想。
3、性能高,因为对于过程而已,处理完了就完了没有多余对象的创建。
b、缺点:
1、维护复杂,一些特别复杂的时间可能会存在时间线特别长,如果某一环节出现问题,后续逻辑全部失败。
2、对修改不友好,也就是不易拓展,单线进行的模式让其不好拓展
1.2、面对对象编码
1.1.1、什么是面对过程编码?
面对对象编程,将事件相关的东西都具象成一个个的对象,这些对象有自己的属性和方法,不同的对象能够进行组合调用,也可以一定的层级关系。也就是说万物皆是对象。
1.1.2、为什么会有面对对象编码
基于面向过程编程易变性不高,不好拓展的缺点,诞生了面向对象的思想,可以从其三大特性入手来理解
封装: 什么是封装呢?将一些关联性很高的东西放在一起,也就是放在一个对象内,将其封存起来。举例说明, 如果计算一个逻辑十分复杂,对于面向过程来说,你需要找到某一个方法进行修改,你需要从繁杂的过程中去找到这一段代码进行修改,而对于面向对象来说,你某一段逻辑是封装好了放在某一个类中的,你通过查找类就可以找到这个对应的逻辑了,十分方便
继承: 什么是继承呢?父子关系,子类能拥有父类的属性以及方法,因此可以很大程度上减少重复代码的出现。
多态: 什么是多态呢?对于同一个接口来说,可以有很多个不同的实现逻辑。如果子类实现了抽象接口,对于该接口进行了不同逻辑的处理。
1.1.3、怎么实现面对对象编程
a、按照事物的关联性生成对应的对象,尽量做到单一对象单一职责。
b、对对象进行组合,继承实现。
c、根据UML关系类图进行组合调用。
1.1.4、面向对象编程的优缺点
a、优点:
1、编程简单,复杂度低,可以很快定位问题。
2、各个部分耦合度低,相互间影响很小。
3、减少了很多重复性,代码复用性变高。
b、缺点:
1、性能不是很好,由于存在大量的对象,需要进行内存,硬盘的计算,对性能有很大的影响
1.3、面对方面编码
1.1.1、什么是面对方面编码?
面对方面编程,对于事件的某一方面进行处理,比较常见的如:切面记录操作日志,许多不同的事件进行统一的日志记录处理。
1.1.2、为什么会有面对方面编码
对于一些业务逻辑基本没有关联,但是却有着一些相同的事件需要处理,这种我们可以统一的对于这些事件的这某个方面进行处理。
1.1.3、怎么实现面对方面编程
在java层面来说,可以实现的如,拦截器,过滤器。底层实现为代理,以及反射。
1.1.4、面向方面编程的优缺点
a、优点:
1、简单,易用
2、降低模块的耦合度
3、使系统容易扩展
4、设计决定的迟绑定:设计师可以推迟为将来的需求作决定
5、更好的代码复用性
b、缺点:
1、使用比较麻烦
2、对初学者不友好,不容易感知