I love you,这是自然语言

用现代OO的表达,就是I.love(you),基本和自然语言保持一致

写成F(函数)形式,为love(I,you),love是个函数名,你会发现,F形式和自然语言不一致.但是...

当你谈论"love is happy"这句话的时候,这里的love是什么?你会发现,love是个函数名,happy是love的一个属性~

即love.happy=true,可参考javascript的函数,它的函数就可以这样做.

那么,什么时候oo,什么时候F呢?很简单,当你想表达I love you的时候用oo,表达love is happy的时候,用F.

用F的关键是,你在强调和研究F本身的性质.比如:

f(x)=x,这个f是单调函数.单调是f的一个属性;kiss is sweet,这个kiss是个F,sweet是F的性质.那些喜欢探索世界的运算法则的人,会特别喜欢函数式编程语言,因为这种语言强调了世界存在运动规律,这种人就爱探索法则,比如md5算法,任何算法爱好者都是如此.而如果你不喜欢探索世界的法则,而是喜欢探索这个世界的存在物及其性质,那么oo就适合你.

所以,love是什么?love是个函数名.

posted @ 2011-03-22 08:19 axgle 阅读(262) 评论(2) 编辑

众所周知,设计模式通常都是用类图表示的.但设计模式并非只能用类图表示,很多人都用c#或java或其他语言来表示.因为设计模式是思想,可以有多种表现方式.下面,看我怎么用er图来展示设计模式,同时让你体会到,ER图远比类图优雅的多.我们以"策略模式"作为例子:

这是经典的"策略模式的ER图",非常简洁直观:

以下是传统的UML类图,其右下角(A,B,C)只是上面ER图里的三条record(三行数据).

策略模式类图

规则为:表名(关系名)对应类名(class),一行记录对应一个对象(object),主键(primary_key)对应object_id,外键(foreign_key)对应对象引用(object reference).
ER图是比类图更加具有普适性的图.因为基于类的OO语言所表达的关系,只是关系理论的一个子集,而且是"真子集".理论上,任何设计模式都可以用er图表示出来,欢迎思考尝试.

posted @ 2011-03-21 20:36 axgle 阅读(545) 评论(0) 编辑
    该文被密码保护。
posted @ 2011-03-21 13:38 axgle 阅读(15) 评论(0) 编辑

php5.4 引入trait,和面向对象的大众接受的发展程度有关. 继承组合,设计模式, 框架,已经或即将成为主流,目的是为了提高生产力.复用是提高生产力的一个途径之一. trait是个古老的概念,之前一直停留在学术领域,近年来软件技术的发展,导致了这种东西被工业化市场化,php与时俱进,不错.

interface和 absolute class存在于java语言中,php5引入了这两者.php5.4引入的trait,是java语言所没有的"新东西".trait对开发者而言,可 以完全取代interface和absolute class.同时开发者也会更喜欢trait,因为trait中包含"真正可以运行的功能特征",而不是interface那样的一张白纸,也不是 absolute那样只能"单继承".
简单的说,一个trait可以被看做一个"角色类",use trait的时候,就是把这个角色类"插入"到继承链的中间.举例:

 http://dashanxue.com/club/thread-188-1-1.html

posted @ 2011-03-19 14:26 axgle 阅读(2096) 评论(3) 编辑
    该文被密码保护。
posted @ 2011-03-16 20:04 axgle 阅读(6) 评论(0) 编辑
    该文被密码保护。
posted @ 2011-03-14 21:18 axgle 阅读(98) 评论(0) 编辑
感觉这里,当前的氛围,还不错.
posted @ 2011-03-14 17:20 axgle 阅读(15) 评论(0) 编辑