面向对象编程(OOP)
简单来说,面向对象就是构成问题事务分解成各个对象,然后用对象执行方法的方式来解决问题。
面向对象的三大特性:
1、封装 隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。 2、继承 提高代码复用性;继承是多态的前提。 3、多态 父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。
优缺点:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 .
缺点:性能比面向过程差
最后
- 抽象会使复杂的问题更加简单化。
- 从以前面向过程的执行者,变成了张张嘴的指挥者。
- 面向对象更符合人类的思维,面向过程则是机器的思想
面向过程编程(POP)
面向过程分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
优缺点:
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向切面编程(AOP)
使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入系统,从而达到了将不同的关注点分离出来的效果。
AOP和IOC都是补充性的技术,它们都是运用模块化方式解决企业应用程序开发中的复杂问题。在典型的面向对象的开发方式中,可能要将日志记录语句放在所有方法和Java类中才能实现日志功能。在AOP方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要的日志组件上。
常用场景
- 日志
- 事物
- 数据库操作
优缺点
优点: 切面的定义放在xml里面,灵活配置;易于测试;易于装卸;
缺点: 创建对象的流程麻烦; 由于spring大部分采用反射机制来实现,消耗性能; 由于对象的定义放在xml,对于使用eclipse来重构就会比较麻烦;
对象关系映射(ORM)
它的作用是在关系型数据库和业务实体对象之间作一个映射,这样我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
优缺点
优点: 隐藏了数据访问细节,构造固化数据结构变简单
缺点:牺牲性能,增加学习成本
ORM方法论基于三个核心原则:
简单:以最基本的形式建模数据。
传达性:数据库结构被任何人都能理解的语言文档化。
精确性:基于数据模型创建正确标准化了的结构。
面向服务的架构(SOA)
它是一种粗粒度,松耦合服务架构,服务之间通过简单,精确定义接口进行通讯,不涉及底层编程接口和通讯模型。它能解决多服务凌乱问题,SOA架构解决数据服务的复杂程度,同时SOA也叫服务治理。
优缺点
优点: 核心逻辑复用,独立测试部署,水平扩展,系统运营。
缺点:依赖复杂,可靠性差,数据一致性,运维要求高
来源:oschina
链接:https://my.oschina.net/u/4448770/blog/3162126