面向对象
笔者能力有限,总结有误的地方,请读者协作更正。
1.OOP思想
面向对象编程思想
面向过程的的编程思想:致上而下,逐步细化。
例如:考试 报名-->缴费-->打印准考证-->考试-->查询分数
- 面向对象
万物皆对象,按照现实世界的逻辑去处理问题。
比如:发明汽车和组装汽车
发明汽车,轮子需要我们自己设计,发动机需要我们自己设计,图纸需要我们自己设计,所有的零件都需要我们自己设计。
组装汽车,需要什么型号的轮子买什么型号的轮子,需要什么品牌的发动机,买什么品牌的发动机,需要什么直接去买,因为一个一零部件就是一个个封装好的对象,我们直接调用就可。
面向对象有四个基本特征:抽象,封装、继承、多态,这几个特征实现了面向对象程序设计的模块化开发,提纲了模块化对象的重用性。
1)抽象
抽象类和抽象方法:
- 在java中,类、方法、接口可以定义为抽象,使用abstract修饰, 变量不可以抽象。
- 抽象方法只能定义在抽象类中,抽象方法只定义方法声明,并没有定义具体实现,在抽象类中定义抽象抽象方法的目的,仅仅是为了让该类不能被实现化。
- 抽象类不可以被实例化,只有通过子类继承之后重写父类中的方法,才可以被实例化。
- 抽象类中有构造函数,作用是用于给子类对象进行初始化,抽象类中可以定义普通方法。
- 抽象关键字abstract不能与final,private,static共存。
接口:
用interface定义,接口中包含全局变量,抽象方法。
接口不可以实例化,需要子类去实现,子类才可以实例化,否则该子类还是抽象类。
接口中的访问修饰符,必须是有public;
接口可以多实现,使用接口的目的是方便扩展功能,或者解耦等。
2)封装
封装就是隐藏对象的属性和具体实现细节,对外提供访问的权限;提供对象的重用性,安全性。
访问权限修饰符:public,protected,默认的,private
3)多态
多态就是事物在不同环境下的具体体现,java中的多态体现在 继承 和 接口实现 上。
多态要求有关系,要么是继承关系,要么是实现关系。
通常会有覆盖方法的操作,子类继承父类重写其中的方法,或者子类实现接口,实现其中的方法。
多态的使用常常涉及到向上造型,子类对象调用父类中的方法。
多态的好处:提高了程序的扩展性。
2.面向切面思想
AOP是OOP的补充,软件设计的时候存在许多横切关注点,比如:日志记录,安全监控,异常处理等。它们的代码和具体业务的代码混合在一起,破坏了OOP的“单一设计”原则,重用性大大降低。
传统的OOP是通过代理模式解决,让整个系统增加了一个层次的划分,较为复杂,代码过于厚重。AOP技术由此产生。
它和OOP在本质上存在区别。
1)AOP的作用:
将日志记录,性能统计,事物处理,异常处理,安全控制等横切关注点,非常重要又和主业务逻辑关系不大的部分横切出来,独立成模块,在主业务逻辑中横向调用,作用是降低耦合,易维护,扩展等。
2)AOP的基本概念:
类,对象,封装,继承,多态是描述OOP的基本术语;
连接点(JointPoint),切入点(PointCut),通知(Advice),方面(Aspect),织入(Weaving),目标(Target),引入(Introduction)是描述AOP的基本术语。
例如,图:
软件设计划分为很多主业务逻辑模块,这些主业务逻辑都需要进行日志处理,安全处理,事物处理等,将日志,事物,安全这些横切关注点抽取处理,单独封装成对象,在主业务逻辑中织入横切关注点对象,降低代码的耦合性,提高重用性。
更多建议: