面向对象先生和他的兄弟姐妹们(二)——小议【OOP、COP、AOP、SOP】

额,发现上一篇《面向对象先生和他的兄弟姐妹们——小议【OOP、COP、AOP、SOP】》那样的写作风格确实是有点偏了额,不过作为一个非写作专业人士,这样的试水我觉得挺有意思的,哈哈!嗯,咱们还是回归正常路线吧。接着说咱们的正事儿哈!

面向对象思想的简单理解:

  从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。

  从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统(摘自——百度百科)

到哪里去?(面向对象的发展)

1、OOP——COP
  概念简介:COP(Component-OrientedProgramming):面向组件编程,所谓的组件是由一个类或多个类及其它元素组成,但是组件有个很明显的特征,就是它是一个独立的物理单元,经常以非源码的形式(如二进制,IL)存在。一个完整的组件中一般有一个主类,而其它的类和元素都是为了支持该主类的功能实现而存在的。我们使用的DLL文件就是组件。还有COM组件……
COP的目标是粗粒度的复用,它的核心是接口。其实就是隔离变化,让系统的构建更加灵活可变。

自己对于COP的思考:这种面向组件式的编程思想其实应该源自建筑行业,从现实生活中来看,我们建造房子的历史要远远早与软件开发和设计。在我们建造房子的过程中,我们就是用面向组件的方式进行的。可以将一块块的柱子,砖头,钉子,门,锁等建造房子所必须的构建看做是组件,在建造房子的过程中直接进行组合构建而成。这个过程非常灵活,哪里坏了换哪里。而且可以同时进行建造工作,效率极高!

哥俩的对比:

先来看看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原理剖析



 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 31
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值