protected void before(){}
protected void after(){}
}
class ExtClass extends BaseClass{
protected void before(){
....
}
}
Ҏ拓扑?topology)Q二l情况下最重要的拓扑结构是所谓的?loop)。例如,在界面上我们l常各U不同的内容攄在某一cd定的Ҏ中,一U好的界面技术应该能够将q种Ҏ独立的抽象出来。在witrixq_的tpl模板语言中,我们通过bodyTag可以L的实现这一抽象?BR>Qapp:普通消息边框>
Qinput type="text" value="name" /Q?BR>...
Q?app:普通消息边框>
q种抽象其实已经出了AOP的范畴?/FONT>
所谓结构,单的说就是一l关pȝ集合。(l构是关系的说法就太过于简陋了Q。在数学上,最基本的关pd是集合之间的包含Qcontains)关系Q而等?equivalance)关系Q序(order)关系Q坐标){都可以Z包含关系推导出来。从集合论的角度上说Q所谓的关系也是通过集合来刻ȝQ两元素相关指的是它们属于同一集合Q,而函数的定义是集合之间的映。因此,在集合论看来Q一切都是集合,数据的结构与函数的结?或者结构的l构的结构之间ƈ无本质性的区别, 甚至数据与结构之间也存在着内在的统一性。一些我们早已默认接受的基本实体Q在集合论的框架下也是通过集合的结构来ȝ的,例如自然?,2,3Q这些数字本w也是通过一些复杂的构造过E来q行描述的,它们只是一些基本结构的速记W号而已?BR> 当然Q世界ƈ不简单。集合论所没有q及的一个事实是Q集合的集合比集合本w要复杂。结构的U列也构成了复杂性的U列Q每一个层ơ都比前一个层ơ要复杂的多。最明显的表现就是函数的L比实数多。在现实的世界中Q我们很多时候都是处在某一复杂性层ơ上Q因而可以深切的感受到基本元素与l构Q与l构的结构之间的q种深刻的差异?BR>
伟大的von Neumann在计机世界中定义了两种基本的东西,数据与指令,在von Neumann体系架构下,两者的界限是明的。CPU的存在定义了指o与数据之间的l合关系Qapply), 而CPU的串行执行强制定义了指o之间的序关系(order)。在软g中我们通过函数装定义了指令的集合Q而这些集合之间仍然存在着由main函数所驱动的序关系。因为函C是通过数据Q代码)来表辄Q因而在形式语义上,我们有可能证明能够表辄函数l构与数据结构是完全一致的Q注Q这斚w我ƈ无研IӞ也不太感兴趣Q。但是现实情况下Q我们对函数之间的结构的控制要弱于对数据l构的控制。最明显的,E序q行Ӟ函数(指oQ空间基本上是静态的Q不变的Q而数据空间则不断的发生着变化。现代Y件系l中plugin, 动态配|,q行时java代码增强(enhance){技术的不断发展正在逐渐~小着q方面的差距?/FONT>
在数据结构方面,C语言中的Structl构体是一个很大的q步。因为由此引出的复杂cdpȝ是对l构的一U抽象描q? 在编译期唯一的一个Struct定义可能对应着q行期的多个实例(instance)。而在引入模板(template)Ҏ之前,每个函数定义都唯一的对应于一些二q制指o。类(Class)相对于Struct的突破之处在于它表达了函敎ͼ指oQ与数据之间的相兛_pRClass之间的关pL成结构的l构。在~译期,我们所面对的只是类型定义,因而处理的正是l构问题Q此时ƈ没有实际的数据实例。而传l上Q编译期所处理的结构都是静态的Q现在脚本语a (script)与language oriented programming正在逐渐H破q一限制。编译期处理l构问题所造成的另外一个现实是Q目前我们对于结构的描述必须Zcdpȝ来进行,一般情况下无法方便的单独定制实例的l构?BR> 函数在其本义上只是对数据的变换,从数据空间的角度看,函数可以被看作是数据之间的一U动态结构,其最lŞ态在q行时结合输入数据才展开。高?(higher order)函数接受函数作ؓ参数Q因而可以看作是对结构的变换。但无论如何Q函Cq程化处理ƈ不是一回事Q只是在von Neumman体系下,可以观测到函数顺序执行才引入了时间概c?/FONT>