在我研究twisted代码的时候,碰到了twisted的组件体系。
当然,它用的是zope的。
问题是,我一直对组件的理解有问题,因为我一直没用过。
那么到底什么是组件?——这成了很重要的问题。
我们可以想象,每一个进程都有自己的代码段和数据段。
那么,组件是个什么呢?是一个模块,就像普通的.so一样。
只是,这个模块有些特别的地方,它的核心概念是接口,而且使用之前必须得到组件的对象。
接口和对象是相对的,有接口才有对象,有对象才有接口。
而且,我们可以判断某个对象是不是实现了某个接口,它都实现了那些接口。
从这一点上看,接口已经成为了一个基本的可操作元素。
对象隐藏在接口之后。
也就是说,程序被分割成数片,每一片都是一个模块,而每个模块都是一些接口和实现接口代码的混合物。
这和普通的模块之间的区别是,抽象程度更高了,更复杂了,有更多的概念和关系了。(普通模块我们可以理解成全是一些函数)
有了这么多的概念和关系,就要有一些代码来处理这些关系,那就是规范。
一但模块被载入,就用规范处理这些代码,以解析出那些是接口,从而使用接口,构造对象。
这里边有一些oo的思想,但是也有不同,相同的是都是接口和实现分离;不同的是,这里没有了继承。
我们必须理解,继承对代码的直接绑定是很糟糕的,更何况还有多继承的情况。
oo不全都是对的,在实践的时候,显得过于复杂了。
组件体系,简化了oo的编程模型,同时,加强了它的系统运行环境。
我觉得,基本上可以这么说,组件编程就是某种oo编程,不过这种更加的可控。
基本上我是这么理解的。
oo的最大的价值就是对接口和对象的划分。这和普通的c式的管理大相径庭。
这种划分给程序增加了某些数据类型——接口。
类似于某些meta的概念。接口,是描述程序本身功能的!
对接口的判断和使用,从某些侧面影响了程序的运行。
这好像是给了程序一面镜子,它会看到自身的某些状况。
比如说某个对象是否实现了某个接口,而原来的c,一切都是指针,我们没法判断这些指针到底是个什么东西,就算知道它指向的是一个函数,我们也不知道这个函数到底是什么,只能调用而已,而接口,恰恰知道这点。
这就好像,有了某种自省的功能。
接口变成了一些有用的符号,一种重要的标志。
类并不重要,重要的是,对象实现了接口!(实现方式可以有很多种,组件模型就是一种)
“com是一种更好的c++”。
昨晚,我下班回去,在做饭之前,下了盘棋,赢了,我升级了,现在3k。
这盘棋的最大意义不是我赢了,而是,我在走了勺子之后的处理。
本来我是大优的棋,结果我有一个地方没算,出了大错,对方杀穿了我的模样。
其实,这时候,我是相当的不利。
而在这时候,我能冷静的处理,通过弃子,把洞穿我模样的棋包进来,杀掉。
虽然有些侥幸,不过,这种处理方式是非常可取的。
这使我觉得,在这种劣势下扭转局面的赢,比正常的赢,还要有价值的多。
这也是我比较开心的地方。
我现在3k。
——向2k迈进!
分享到:
相关推荐
在深入探讨Flex布局中关于组件大小的管理时,我们首先需要理解Flex布局的基本概念及其如何影响组件的尺寸。Flex布局是一种用于网页布局的强大工具,它能够有效地处理不同屏幕尺寸下的响应式设计,使得元素能够在容器...
在组件化编程中,标记(metadata)是用来存储关于组件额外信息的一种方式。这可能包括组件的名称、版本、作者,或者在运行时需要的任何自定义属性。标记可以帮助开发者管理、查找和识别组件,特别是在大型项目中。...
"易语言复制组件到选择夹子夹源码"这个标题暗示了我们即将探讨的是易语言中关于组件复制和目录操作的相关知识。在易语言中,组件(Component)是指一些预先编写好的、可复用的代码模块,它们可以被添加到项目中,以...
`aboutus.html`可能包含关于组件的介绍、开发者信息或者使用教程等内容,帮助用户更好地理解和使用该组件。 `data.json`文件则可能是存储时间轴上各个事件的数据源。JSON(JavaScript Object Notation)是一种轻量...
【压缩包子文件列表】中的文件名提供了关于组件结构的信息: 1. **main.js**:这是uni-app项目的入口文件,通常包含应用的全局配置和初始化代码。 2. **manifest.json**:uni-app的配置文件,定义了应用的元数据、...
在Windows系统中,注册表是COM组件的关键,它存储了关于组件的信息,包括类ID、接口ID、组件路径等,使得系统能够在需要时找到并加载组件。 源码分析可以帮助我们更直观地理解COM的工作机制。例如,我们可以看到...
在压缩包的文件列表中,我们看到"delphifans.com.nfo",这通常是发布者提供的一些信息文件,可能包含了关于组件的详细说明、使用教程或者开发者的信息。"PyCode.pas"和"ComboBoxPY.pas"则是关键的源代码文件。PyCode...
COM组件设计与应用是关于组件对象模型(Component Object Model)在软件开发中的使用,尤其是与Microsoft Office 2010相关的技术。COM是一种软件接口技术,允许不同编程语言之间创建和交互对象,它通过标准化的方式...
- **解决方案**:仔细研究ExtJS官方文档中关于组件生命周期的相关内容,并确保正确覆盖关键方法,如`initComponent`等。 3. **错误地new**:对于UI组件,ExtJS提供了一种称为xtype的机制,通过xtype可以实现组件的...
另外,附带的`.txt`文件可能包含了一些关于组件的使用指南或帮助文档。例如,`查看帮助.txt`可能提供了组件的API说明,`会员服务.txt`和`VIP会员.htm`可能涉及到组件的授权和升级服务,而`安全中国anqn.com.txt`可能...
- `NOTICE.txt`:关于组件中包含的其他软件或版权信息的通知。 - `README.txt`或类似的文件:简要介绍组件的用途和使用方法。 通过以上信息,开发者可以轻松集成和使用Apache FileUpload组件,实现高效且可靠的文件...
3. **README.md**:这是一个Markdown格式的文档,通常会提供关于组件的使用说明、安装指南、注意事项等信息。通过阅读README,我们可以快速掌握如何将步骤条组件整合到自己的项目中,以及了解可能遇到的问题和解决...
4. **readme.txt**和**说明.txt**:这些是常见的文本文件,可能包含关于组件的最新更新、注意事项或者快速启动指南。 5. **image usage.txt**:这可能是指导用户如何准备和导入图片到3DWall中的说明文件,可能包括...
由于【压缩包子文件的文件名称列表】中只有一个名为“content.txt”的文件,我们可以假设这是组件的使用说明、源代码注释或者是关于组件功能和实现的详细文档。通常,这样的文本文件会包含如何在易语言项目中集成API...
4. **收费说明.doc**:这可能是关于组件或服务的费用结构、许可信息或者购买和使用条款的文档,对于商业用途尤其重要。 5. **安桌JAVA组件**:虽然主要讨论的是Delphi组件,但提及的“安桌JAVA组件”可能意味着该...
我也找找了很多关于组件之间通讯的方法,不同的方法应用在不同的场景,根据功能需求选择组件之间最适合的通讯方式。下面我就总结一下关于组件通讯的N多种方法。 1.父→子 input parent.ts import { Component } ...
在提供的压缩包文件中,"Readme.txt"和"History.txt"很可能是关于组件的使用指南和更新历史,包含了安装、配置和使用组件的基本步骤以及版本变更信息。"Example"目录可能包含演示程序或代码片段,展示了如何在Delphi...
以上知识点仅仅是VB6组件工具指南可能涉及的一部分内容,实际指南中可能会有更多关于组件设计原则、组件版本管理、组件安全性和其他高级主题的详细讨论。通过深入学习和实践,开发者可以充分利用VB6的组件工具,提升...
10. **关于信息**:UDCrpeDSAbout.dfm、UDAbout.dfm等文件可能包含关于组件的详细信息,包括版本、版权和使用条款等。 **开发应用** 在实际开发中,开发者可以利用这些组件实现以下功能: - **数据查询与绑定**:...
ReadMe.txt文件通常包含了关于组件的简要说明、安装步骤或使用提示,对于初学者来说,这是一个快速了解组件功能和如何开始使用的入门指南。 LogConfig.xml文件是日志配置文件,它定义了日志组件的行为,比如日志...