道与JAVA(一)

来源:互联网 发布:linux sleep函数单位 编辑:程序博客网 时间:2024/04/25 05:32

我从2008年开始接触道家,当时对道家思想感兴趣是因为看了于丹教授的《于丹庄子心得》,觉得庄子这本书里面有很多道理是相当相当牛逼的,然后就买了《道德经》和《南华经》,把源码拿过来研究研究,不得不说道家思想确实太深奥了,拿着源码啃了几年,也就学了些皮毛,里面的思想还是不得要领。后来因为一些缘故,接触到了java语言,写过安卓项目,看过安卓源码,发现java很多思想和道家思想是相似相同的。道是无生有,道生一,java是类生对象。道是虚比实有用重要,java玩多态靠的就是抽象。学安卓也有两年了,从安卓源码和java设计思想或设计模式多多少少发现了道的影子,就把这些心得写出来,如果大家觉得写的有问题,可以提出来。

好戏开始

1,
道 可 道 , 非 常 道 。 名 可 名 , 非 常 名 。
无 名 天 地 之 始 ﹔ 有 名 万 物 之 母 。
故 常 无 , 欲 以 观 其 妙 ﹔ 常 有 , 欲 以 观 其 徼 。
此 两 者 , 同 出 而 异 名 , 同 谓 之 玄 。
玄 之 又 玄 , 众 妙 之 门 。

先明白一个概念:什么是类,什么是对象?
一切你看不见的抽象都是类,比方说 人类,鸟类。
一切你能看得见摸得着的都是对象,比方说苍老师(人类的实例),麻雀(鸟类的实例)。
java的逻辑是类生对象,那么类是有什么生成的呢?都是这些看不见的道了。

道是没有名字的,叫做天地之始,道生出了类,类是一切对象的母亲(由一个类去实例化出千千万万个对象),类就是万物之母。

故常无,这个无指的是类,比方说人类,你能看见人类吗?你能看见鸟类吗?类是看不见的,虽然说每个类的对象各不相同,人类的实例(张三,李四,王五,这都是不同的人),但是从无(类)的角度来看他们都是相同的,他们都具有相同的属性(年龄,性别),也具有相同的行为方法(生,老,病,死,吃,喝),不同的实例行为却相同,这是很奇妙的。

故常有,这里有指的是对象,人类实例化了两个实例,一个是张三,一个是李四,在张三看来,李四和他是不相同的,而且他也能发现李四实例的方法(吃,喝)和他也不相同,注意,行为方法是固定的,但表现形式并不是在构造该方法的时候决定的,而是在把对象创建出来的时候决定的,人类这个类有个方法叫做吃,所有人(实例)都具备这个吃的方法,但表现形式确实在实例创建后决定,豪迈的人会大口吃,婉约的人会一丁点吃。回到主题,故常有欲以观其缴,当对象创建出来之后,对象的行为方法表现特征也会被确定,或者说可以明确的知道这个对象是怎么吃的。

无(类)和有(对象)都是出的方法,即向外界提供信息告你外界我是谁我能干嘛的方法,只是类是从集合的角度,而对象是从个体的角度(体会这样一句话,我养了1W头能生产奶的奶牛,其中这一头一天能生产10kg牛奶,奶牛是一个类,他们对外界提供的信息是我能生产牛奶,但是能生产多少牛奶,这个从无(奶头)来看是无法得知的,其中有一头牛一天能生产10kg牛奶,这里就是特制奶牛群中的某一头奶牛,这头奶牛对外界提供的信息是我一天能生产10kg牛奶)。他们都是很玄妙的东西。

2,
天 下 皆 知 美 之 为 美 , 斯 恶 已 。
皆 知 善 之 为 善 , 斯 不 善 已 。
有 无 相 生 , 难 易 相 成 , 长 短 相 形 ,
高 下 相 盈 , 音 声 相 和 , 前 后 相 随 。
恒 也 。 是 以 圣 人 处 无 为 之 事 ,
行 不 言 之 教 ﹔ 万 物 作 而 弗 始 ,
生 而 弗 有 , 为 而 弗 恃 , 功 成 而 不 居 。
夫 唯 弗 居 , 是 以 不 去 。

继承是一件很美好的东西,有些功能父类有,子类去继承父类,也就继承了父类的功能,不用在写一些代码去完成功能,也能从父类那里把关系(多态)继承下来。结果大家都去用继承,比方说现在有个父类 鸟类,鸟类有吃(),喝(),走(),飞()方法,现在创建一个企鹅类,企鹅需要吃(),喝(),走()方法,不像自己写怎么办,从鸟类去继承,但继承也会把飞()方法继承下来,企鹅不会飞啊,这样继承就违反了里氏代换原则,继承是好,但是别滥用,应当先考虑复合。
实现类的方法都是实的(有方法体),接口的方法是虚的(没有方法体),虚实相互结合,就构成了java最好玩的多态。
接口有所作为吗?接口不能有实例,抽象方法都没有方法体,以圣人处无为之事可以认为是架构师写接口和抽象方法。可能有人会问,抽象方法的意义是什么,我想告诉你们,抽象方法可以理解是一种承诺,或者目标,我创办一家餐厅,我的目标就是提供美味的菜肴给顾客,这里提供美味的菜肴就是抽象方法,因为这是在创办餐馆时期说的,此时什么都没有,却需要先把目标定下来。抽象方法同样是这样,先一个业务模块之前,先定义抽象方法(即业务模块要给外界带来什么便利,或者直接点写这模块是做什么的),有了方向,有了目标,做事就不会乱。

在java中,资源是有限的,一个类的实例该做的事情做完了,他也应该去了(被回收),虽然该实例帮我们做了很多事情,任务一旦完成,就必须离开,一个实例帮助我们做了多么伟大艰巨的任务,他却从来没有提出要求要多活一会,也没有骂我们卸磨杀驴,他悄悄地来,又悄悄地离去。正是因为他具有这样的品质,我们才会一直用他。

3,
不 尚 贤 , 使 民 不 争
不 贵 难 得 之 货 , 使 民 不 为 盗 ﹔
不 见 可 欲 , 使 民 心 不 乱 。
是 以 圣 人 之 治 ,
虚 其 心 ,
实 其 腹 ,
弱 其 志 ,
强 其 骨 。
常 使 民 无 知 无 欲 。
使 夫 智 者 不 敢 为 也 。
为 无 为 , 则 无 不 治 。

在java语言中,所有类都是平等的,所有类都是有用的,不可能放一两个没什么用的类放在项目中,这些类没有好坏贵贱之分,他们的价值体现在使用他们的时刻。

4,
道 冲 , 而 用 之 或 不 盈 。
渊 兮 , 似 万 物 之 宗 ﹔ 湛 兮 , 似 或 存 。
吾 不 知 谁 之 子 , 象 帝 之 先 。

抽象是虚的,它的作用却是无穷的。

5,
天 地 不 仁 , 以 万 物 为 刍 狗 ﹔ 圣 人 不 仁 , 以 百 姓 为 刍 狗 。
天 地 之 间 , 其 犹 橐 钥 乎 。 虚 而 不 屈 , 动 而 愈 出 。
多 言 数 穷 , 不 如 守 中 。

java是很无情的,局部对象用完之后垃圾回收机制就把他当垃圾回收了,确实很不仁义,但是如果因为一个局部对象做了一点点事情,在它没有用的时候继续给他内存资源让他存活着,就会导致内存紧张。java就像是一个灶台,使用对象好比是烧柴,柴的价值利用完了剩下一堆灰烬,就被回收了。
如果一个类对外暴露了很多方法,别的类就会通过这些方法,调用多了对象会发生本质的改变,所以要尽可能的少对外暴露方法或者属性,老老实实的固守阵地。

6,
谷 神 不 死 , 是 谓 玄 牝 。
玄 牝 之 门 , 是 谓 天 地 根 。帛系 若 存 , 用 之 不 勤 。

类是静态的,类是不朽的,类就像种子一样,看起来不存在,但需要对象的时候却可以不断的创造。

7,
天 长 地 久 。
天 地 所 以 能 长 且 久 者 ,
以 其 不 自 生 , 故 能 长 生 。
是 以 圣 人 后 其 身 而 身 先 ﹔ 外 其 身 而 身 存 。
非 以 其 无 私 邪 。
故 能 成 其 私 。

接口是永恒的,实现类也许会变过来变过去,但接口却很难发生变动,框架只能接受接口类型,接口可以让任意一个实现类被框架调用,可以认为接口是普度众类,让众类抵达极乐世界(众类被框架调用),接口是为了实现类而存在,不是为了自身而存在(接口不能new),所以接口可以长生。 接口虽然不能直接new,但可以说所有的实现类都是接口类型(即多态)。

8,
上 善 若 水 。
水 善 利 万 物 而 不 争 ,
处 众 人 之 所 恶 , 故 几 于 道 。
居 善 地 , 心 善 渊 , 与 善 仁 ,
言 善 信 , 政 善 治 , 事 善 能 ,
动 善 时 。 夫 唯 不 争 , 故 无 尤 。

java很容易上手,不仅是因为java没有恶心的指针和多继承,而是java api有很多容易上手非常好用的类,比方说String,在一个项目很多地方都能看到String类,他默默的服务所有类,不要名不要利,类方法很好用,大大的方便了开发者。

0 0
原创粉丝点击