从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。
从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统(摘自——百度百科)先来看看OOP技术
OOP基础 -- 接口与实现分离;OOP核心 -- 接口和实现分离的更高级升华,使得在运行时可以动态根据条件来选择隐藏在接口背后的实现;OOP表现形式 --类和继承,OOP的主要目标是使系统对象化,良好对象化的系统,就是系统的各部分更加清晰,耦合度大大降低。
再来看看COP技术:
COP技术是建立在OOP技术之上的,它是OOP的进一步发展。类仍然是组件技术中一个基础的概念,组件技术更核心的是接口。组件技术的主要目标是复用--粗粒度的复用,不是类的复用,而是组件的复用,如一个DLL,一个中间件,甚至一个FrameWork。
2、OOP——AOP
AOP为Aspect OrientedProgramming的缩写,意为:面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
AOP是OOP的延续和发展。
个人理解:
面向对象的编程思想的经典体现可以从Gof设计模式找到,设计模式中大多体现解耦的思想。将调用者和被调用者之间进行解耦。觉得这里面有很多相似的地方。其实,从某种意义上来说有点GOf设计模式中的装饰模式的感觉。
装饰模式的定义:(DecoratorPattern,装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。)
用到何处?
通常AOP被用到日志管理、异常处理、性能统计、安全控制、事务处理等系统功能的设计中。将将这些功能的代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码
哥俩对比:
OOP针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。
AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异
三幅图看懂AOP(摘自51技术博客)
1、传统业务逻辑组件设计
2、面向切面的设计
3、AOP原理剖析