额,发现上一篇《面向对象先生和他的兄弟姐妹们——小议【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原理剖析

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

  1. [Object]面向对象编程(高程版)(二)原型模式

    [Object]面向对象编程(高程版)(二)原型模式 博客分类: Web前端-JS语言核心 作者:zccst 三.原型模式 每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个 ...

  2. java面向对象实验结论及心得_20162305 实验二 Java面向对象程序设计 实验报告

    20162305 实验二 Java面向对象程序设计 实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D ...

  3. C语言实现OOP——轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍(二)

    轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍 下面,再举一个稍微复杂的例子,它的覆盖面是足够全面的,足以一瞥面向对象编程的3个要素:数据抽象.继承和多态.通过这个例子,我们期望展现出LW_ ...

  4. js面向对象开发互联网机顶盒应用头端之二

    /** * Dare Movie Object. * @constructor */ //声明构造函数 构造函数初始化变量 Dare.Movie = function() {   this.paren ...

  5. python面向对象思想汇报_思想汇报(二)——有关测试

    写在最前面:本文毫无文艺气息,更多的是吐槽. 写在前面:文章内容纯属个人观点,如有雷同,绝无可能. 关于我 12年开始从事软件测试测试行业(以下简称测试),至今四个年头,先后混迹过好多大项目和小项目. ...

  6. JAVA面向对象编程(孙卫琴)读书笔记(二)

    九.抽象 抽象是指从特定的角度出发,把以及存在的事物抽取我们所关注的东西,形成一个新的事物的思维过程. 抽象思维在艺术和科学领域上得到了广泛的运用,例如:一幅在干旱大地突然下起大雨的抽象画,其对真实世 ...

  7. Python面向对象程序设计之抽象工厂模式之二-一个更加pythonic的抽象工厂

    上一篇文章我们说到DiagramFactory和其SvgDiagramFactory子类以及它们使用到的类比如(Diagram,SvgDiagram等等),能够很好的实现预订的功能并且也符合抽象工厂的 ...

  8. 面向对象——多态,抽象类,接口(二)

    目录 前言: 多态 1.1 向下转型(了解) 1.2 instanceof关键字 1.3 多态(理解) 1.4 多态的好处 抽象类 2.1 abstract关键字 2.2 语法规则 接口(重点) 3. ...

  9. 用《叩响C#之门》复习C#基础知识 第八章 面向对象编程:类和对象(二)

    1.以对象为成员 类的成员不光可以是int.double等基本类型的变量,也可以是其他类的对象.其实也就是说,类的成员可以是所有的值类型和引用类型的成员变量. 2.静态成员 1)静态变量:描述类的整体 ...

最新文章

  1. 合肥师范学院计算机毕设选老师,计算机毕设被导师要求反复修改?
  2. 【 FPGA 】超声波测距小实验(一)
  3. Android开发之异步任务加载网络图片并存储在sdcard中(源代码分享)
  4. 磁盘 分区 lvm之间await util的统计关系
  5. mysql-5.7.18-winx64 安装 net start mysql 发生系统错误2
  6. PMCAFF微课堂 | 测试兄弟CEO揭秘如何提高创初团队的产品质量
  7. 科大讯飞同时公布年报和一季度报,冰火两重天
  8. Centos7.x/redhat7.x修改网卡名称
  9. OpenSilver: 通过WebAssembly 复活Silverlight
  10. 在maven项目中打开jsp_零基础在intellij中打开一个项目复制粘贴内容即可运行的java拼图...
  11. Android模拟器访问本机服务IP地址
  12. CCNA学习总结—OSPF协议—OSPF协议原理
  13. ElasticSearch核心基础之索引管理
  14. UVA10608 Friends【并查集】
  15. Git常用命令及场景
  16. windows解压jar文件
  17. 计算机专业色弱限制,体检标准变成建议 色盲色弱能报高校计算机专业
  18. java调用js模板引擎_JavaScript模板引擎Template.js使用详解
  19. 单尺度Retinex
  20. HTML 语法练习---常见标签

热门文章

  1. 绘制破碎的蛋壳于小女孩合成的效果!
  2. linux 查看工程用什么工具,工程师工具包-Linux常用命令及常用操作-持续更新中...
  3. 数据库索引 ( 三 ) MySQL全文索引
  4. js节点和元素区别【2021.11.10】
  5. C#域名操作,正则匹配域名
  6. 嵌入式linux防复制,嵌入式linux /dev 下的文件无法复制
  7. python获取计算机时间_python怎么获取系统当前的时间
  8. Flink教程(09)- Flink批流一体API(Connectors示例)
  9. Python学习之旅三:python高级语法
  10. pads栅格捕捉间距怎么设置