锁定老帖子 主题:面向行为编程!继面向对象的新的软件开发模式
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-05
最后修改:2011-04-05
sleepinglord 写道 嗯,看了看lz的贴,你基本上是把一个函数的函数体当做一个东西(就是你说的行为),然后参数和返回值都用类似HashMap这样的东西代替了。其实按照你说的,非常简单,只要实现两条:
1.所有的函数都是类似这样的: HashMap func(HashMap param) throws ParameterNotFoundException, ResultNotFoundException, ehaviorNotFoundException{ //do something return HashMap result; } 2.所有的函数本身可以直接作为对象来参与操作,比如作为参数传递(就是作为值出现在HashMap里,作为结果返回,等等。(你之所以写Login类,仅仅是因为java不支持这个事情)。 其实,javascript,除了返回值和不能按名调用参数,基本上已经满足你了;只要你写javascript的时候别写参数,全部用arguments,然后再加点函数式编程的思想。就ok了。 这样做有一个问题。就是类型!由于统统是Hashmap,参数类型就没有了,你需要自己做类型检查,类型转换,抛异常! LZ这个确实是HashMap的充分应用,以前也想这么干,于是在试的过程中,变得万分痛苦 |
|
返回顶楼 | |
发表时间:2011-04-08
最后修改:2011-04-08
很好么,不觉得。
LZ的意思,的确是函数式对象化,Scala语言就是具有这么一个特征。 “一切皆对象”不是随便说的,没有理解当中的真谛,就认为什么都是对象的话,我把基本数据类型理解为对象,岂不是面向过程了? 面向对象,不是简单地认为“一切皆对象”,或者说“一切皆对象”这句话不是一般人能够所理解。OO只有作为世界观,或者结合哲学来认识才会有价值。(想认识多点可以到jdon上,看看哲学怎么来解析OO和用OO,当然那也是一方之谈,信不信由你) 灵活性和严谨性,是一场博弈,度是关键。为泛而泛,而不考虑度得话,泛型将会失去意义,就像其他所说第三方调用一样。调用服务哪有反过来要求服务修改来配合的?服务不适合不是服务的错,而是你选错。而没有真正适合的,模式的存在价值就产生了。用泛的方式把模式隐藏起来,有好亦有坏。 补充一点:Scala有很强逻辑,当然门槛有点高,但是能把函数式和对象完美结合起来,将会有效补充思维。OO不只存在于java,至少现在除了刻意要面向过程的语言外,其他语言都可以用OO来描述,包括函数语言。 |
|
返回顶楼 | |
发表时间:2011-04-08
add2ws 写道 zrweng 写道 这种实现方式使业务接口非常不清晰,如果暴露为WebService,真不知道让外部怎么使用?得不偿失呀!
由于外部接口的声明定义都被隐藏了,的确显的很不清晰!但这正恰恰反映了传统接口编程的硬伤,因为大多数情况下,业务行为的所需参数和结果本身就是不清晰的!正因为接口编程里把参数和返回值都写死了,所以才使写好的代码再反过来适应外部业务变化的时候显的那么吃力。所以我们干脆在一开始就把业务接口给模糊化,不去理会参数和返回值 LZ觉得是参数和返回值写死了,然后有了你那么一种写法,其实跟 public Map login(Map param) 不是一回事么?这样你可以随便加什么参数和返回什么值了吧? 不过使用者没有文档还真不知道填什么参数和有什么返回值,维护起来会非常痛苦 |
|
返回顶楼 | |
发表时间:2011-06-20
Behavior 可以作为Login一个成员变量,类的继承不是随随便便就能用的
|
|
返回顶楼 | |
发表时间:2011-06-20
看不到什么方便的地方, 任然要知道传什么参数, 任然要知道返回有多少种类型, 任然看到的是对象的影子,升级版,还是对象的一部分?
|
|
返回顶楼 | |
发表时间:2011-06-22
单纯的看你的doing方法,有点像门面(Facade)模式,然后后面又提到了命令(command)模式,应该算是一个多模式的结合体?
本来模式就是可以组合使用的啊 |
|
返回顶楼 | |
发表时间:2011-07-01
所有方法都这样写的话,代码如何重构,编辑器支持不好
|
|
返回顶楼 | |
发表时间:2011-07-06
学好设计模式,能帮助理解遇到的问题.
|
|
返回顶楼 | |
发表时间:2011-10-08
看你这个标题有点吓人,就进来瞧瞧!瞅了半天,LZ肯定是个小伙子。LZ 建议你可以搭建个框架,基于你这个模式来。就是实现一个简单的BBS项目,你看一下你的代码跟用MVC2有啥区别。你这个思想还完全依赖MVC。你可以看下驱动编程!
|
|
返回顶楼 | |
发表时间:2011-11-20
类似于struts 2.x action中dispatch类中都需要实现excute方法。
|
|
返回顶楼 | |