由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 报offer咯
相关主题
一个土土的问题现在有些迷惑了
JEE 6 看起来不错Re: Anyone interested in starting our own EJB vender company?
是不是spring mvc用的很少有没有对EAI,JCA熟悉的?
再论abstract class封装
interface可不可以有variable?说说spring和ejb的差别
Java Play Framework 和 Spring 比较一下? (转载)真的还有人用那么heavy的web sphere,jboss么?
annotation question哪个牛人来说一下JSF的前景
spring Annotation based configuration你们知道jee都有什么吗?
相关话题的讨论汇总
话题: abstract话题: class话题: interface话题: 东西话题: 不是
进入Java版参与讨论
1 (共1页)
z****e
发帖数: 54598
1
几天不来了
在忙着跟公司那边电面一面二面还有reference check呢
简单说一下过程
对方是一家世界级的大公司,至少在它所在的it领域
在这块大陆上,木有其它的公司能跟它掰手腕
世界排名第六吧这样,前面有一家德国,一家加拿大和三家美帝的公司
排名第五的是德国公司,这家公司跟德国公司还有排名第七的公司
都有距离,换句话说,它第六的位置屁股坐得是相当稳固
电面,team leader打来的,简单问了一下背景
大致聊了聊,觉得背景比较match,于是让hr安排下一轮面试
第一轮面,理论上的技术面试,但是没有笔试
跟之前的不少公司上来就笔试不一样,这一轮纯聊天
team leader人很nice,当问到具体的技术问题的时候
还安慰我不要紧张,如果不会也没有关系
几个技术问题,我看他们有一张问题列表,如果回答比较好
就跳过几个问题再问,如果回答一般,就问下一个,如果回答不好
就往前问
第一个问题是,abstract class和interface,举例
实话说abstract class的例子还真不好找
第二个问题是,singleton,举例
第三个问题是,前一题扩展,列举设计模式
然后对方从你举的模式中挑一个模式,要求展开
结束了之后就是纯粹的聊天,逐步深入
平常用什么version control啊,用什么ide啊,用什么os啊
对xml懂多少啊,用什么方式集成系统啊
愿意做core java还是j2ee啊等等
等下回帖中总结一下技术面试的要点
回到家里发感谢信,感觉感谢信真的很管用
求职的时候,只要发感谢信的,基本上都过了
感谢信之后第二天收到hr的电话,让从几个日期中选一个二面
选了最近的一个二面,然后等邮件,确认后就准备二面
二面,二面是跟领导面
一个小建议,把领导的背景好好查查,尤其是linkedin上
管不少人的领导的信息基本上都是公开的
然后找跟这个领导的共同点,调和气氛
这一招非常管用,领导听了哈哈大笑,之后感觉这个领导完全不刁难
连问题都是这样的,我们要找***的人,你是这样的人么?
我们要找***的人,你准备好了吗?
最后领导说,我还需要跟上头汇报,才能给offer
在这期间,你有什么问题可以问我,听了这句话,嗯
虽然我二面感觉不是非常好,但是隐约觉得,稳了
回家继续发感谢信,无论什么时候,感谢信一定要发
老大教育过,在鬼子地盘混,技术是次要的,人一定要nice
次日就收到hr电话,让给reference details
赶紧找以前的领导推荐
然后hr联系以前领导,以前领导说了一堆好话
再然后就收到hr电话,Congratulations
z****e
发帖数: 54598
2
先去洗澡,几天不用这个帐号
发现不少人发私信问问题
慢慢来,一一答复
J*******n
发帖数: 2901
3
cong!
T****U
发帖数: 3344
4
cong! 什么title, money多少阿?

【在 z****e 的大作中提到】
: 几天不来了
: 在忙着跟公司那边电面一面二面还有reference check呢
: 简单说一下过程
: 对方是一家世界级的大公司,至少在它所在的it领域
: 在这块大陆上,木有其它的公司能跟它掰手腕
: 世界排名第六吧这样,前面有一家德国,一家加拿大和三家美帝的公司
: 排名第五的是德国公司,这家公司跟德国公司还有排名第七的公司
: 都有距离,换句话说,它第六的位置屁股坐得是相当稳固
: 电面,team leader打来的,简单问了一下背景
: 大致聊了聊,觉得背景比较match,于是让hr安排下一轮面试

s****s
发帖数: 628
5
公司在什么地方?
b******y
发帖数: 9224
6
ding!
感谢信重要啊,至少可以多积攒rp, 呵呵。
h*******d
发帖数: 1530
7
“对方是一家世界级的大公司,至少在它所在的it领域
在这块大陆上,木有其它的公司能跟它掰手腕
世界排名第六吧这样,前面有一家德国,一家加拿大和三家美帝的公司
排名第五的是德国公司,这家公司跟德国公司还有排名第七的公司
都有距离,换句话说,它第六的位置屁股坐得是相当稳固”
报个公司名算泄密么?至于么?自己看得太重了吧,在别人眼里就是个屁啊
r*****t
发帖数: 712
8
挣多少钱是关键啊
s******e
发帖数: 493
9
Bingo!
Also congrat to lz.

【在 r*****t 的大作中提到】
: 挣多少钱是关键啊
u****i
发帖数: 1679
10
Re
相关主题
Java Play Framework 和 Spring 比较一下? (转载)现在有些迷惑了
annotation questionRe: Anyone interested in starting our own EJB vender company?
spring Annotation based configuration有没有对EAI,JCA熟悉的?
进入Java版参与讨论
r********s
发帖数: 101
11
姑娘,你大姨妈来了吗?

【在 h*******d 的大作中提到】
: “对方是一家世界级的大公司,至少在它所在的it领域
: 在这块大陆上,木有其它的公司能跟它掰手腕
: 世界排名第六吧这样,前面有一家德国,一家加拿大和三家美帝的公司
: 排名第五的是德国公司,这家公司跟德国公司还有排名第七的公司
: 都有距离,换句话说,它第六的位置屁股坐得是相当稳固”
: 报个公司名算泄密么?至于么?自己看得太重了吧,在别人眼里就是个屁啊

l*******m
发帖数: 262
12
俺们硅工们在乎大公司么?给你个1000人左右的上市公司,你是前20个Emploee,比IBM
怎样?
z****e
发帖数: 54598
13
看在你帮我教育了一下那个内分泌失调的家伙的份上
我展开说说为啥要去大公司
主要不是钱的原因,我之前在的一个小公司
总共就那么点人,每个月营业额都上百万,成本一百万一年顶天了
不包括人工,然后剩下的钱就大家分
但是呢
小公司没有系统集成这个概念
总共加起来就那么几个系统,集成个屁啊
甚至连开发都没有得太多可以做,因为他们做得已经很好了
bug两周没有一个,我每天瞎混日子,觉得很乏味
而这个要去的大公司,他们有很多系统
一堆的技术,什么ejb, spring, hibernate, jboss, esb等等
而且由于legacy code太过于庞大,所以需要有经验的人来逐步改善原有代码
这个是我特别喜欢的一个地方,这才是体现俺能力的地方
从无到有写代码那更适合本科刚毕业的人做,去学习
我这种老油条了,要找特别难搞的地方去搞,搞系统集成才是俺现在的兴趣所在
所以这个职位不给应届生任何机会,硬性要求要有工作经验
这就很像当年sun在国内的办事处招人一样
这是第一个原因
第二个原因呢,大公司嘛,混资历比较好,也安全,不比小公司
今年吃肉明年喝粥,这个吃不消,我也懒得经常性地跑来跑去
跳槽也好,搬家也罢,都是过去式了,是时候稳定下来生几个娃了
而且我两个高福利的身份,钱赚那么多干嘛?嫌我的税不够高么?
而生娃生得越多,额外政府补贴就越多,所以老大很早以前教育过
在这片土地上,干活是次要的,生娃才是正事
第三个原因呢,我面的时候,感觉这个公司的人我很喜欢
跟我不是一个类型的,我是那种比较操蛋,经常跳上跳下的人
不是很安分的人,所以如果遇到跟我同一个类型的,容易起冲突
一山不容二虎,而这个公司的人给我感觉很nice,诶,我就喜欢跟这种人工作
不累,也有趣,性格可以互补,以前跟老大一个team的时候,经常两个人吵架
吵得天翻地覆的,整个部门都是我们的声音
第四个原因呢,我自己就有小business要做,还再去小地方做?
这就冲突了,而大公司才更有我锻炼的地方,能锻炼我早就锻炼过了
要不然这些技术我从哪里学的?不过我很幸运,就是我从毕业之后
基本上就在大公司做,但是呢,都是偏行业的大公司,有点像是sas这种
专门做某一个领域的it公司,不是什么ibm之类的,什么狗屁都做
所以呢,单纯比规模,跟ibm什么还是不能比,但是在行业内,都是数一数二的规模
这也是为什么我不愿意说是什么公司的原因,这一行干久了久这样
什么行业我们都能进去,但是只要说到具体行业,那要找到人太容易了
整个公司上下中国人木有几个,我干嘛让别人有人肉我的机会?
只有白痴才会轻易暴露自己在网络上,网络义和团的威力还是不见识为好

IBM

【在 l*******m 的大作中提到】
: 俺们硅工们在乎大公司么?给你个1000人左右的上市公司,你是前20个Emploee,比IBM
: 怎样?

z****e
发帖数: 54598
14
今晚玩几把三国杀,明天跑去照点景色的相片,天气暖和了
明天有空再写点东西,今天先这样
S**********C
发帖数: 161
15
先恭喜了,不过泼个冷水啊,从面试问题的广度和深度来看,
这个就是一个有两年工作经验的Junior Developer的要求,你期望可能太高。

【在 z****e 的大作中提到】
: 看在你帮我教育了一下那个内分泌失调的家伙的份上
: 我展开说说为啥要去大公司
: 主要不是钱的原因,我之前在的一个小公司
: 总共就那么点人,每个月营业额都上百万,成本一百万一年顶天了
: 不包括人工,然后剩下的钱就大家分
: 但是呢
: 小公司没有系统集成这个概念
: 总共加起来就那么几个系统,集成个屁啊
: 甚至连开发都没有得太多可以做,因为他们做得已经很好了
: bug两周没有一个,我每天瞎混日子,觉得很乏味

r***y
发帖数: 4379
16
agleeeee
俺这刚进的一个毕业生被面的时候也不会说abstract的例子不好找, 回答的砍瓜切菜一
样利索

【在 S**********C 的大作中提到】
: 先恭喜了,不过泼个冷水啊,从面试问题的广度和深度来看,
: 这个就是一个有两年工作经验的Junior Developer的要求,你期望可能太高。

c*******u
发帖数: 1657
17
这个面试也太简单了吧。。。
我前几天面的一个招junior java developer的面试都比这个难

【在 z****e 的大作中提到】
: 几天不来了
: 在忙着跟公司那边电面一面二面还有reference check呢
: 简单说一下过程
: 对方是一家世界级的大公司,至少在它所在的it领域
: 在这块大陆上,木有其它的公司能跟它掰手腕
: 世界排名第六吧这样,前面有一家德国,一家加拿大和三家美帝的公司
: 排名第五的是德国公司,这家公司跟德国公司还有排名第七的公司
: 都有距离,换句话说,它第六的位置屁股坐得是相当稳固
: 电面,team leader打来的,简单问了一下背景
: 大致聊了聊,觉得背景比较match,于是让hr安排下一轮面试

a****i
发帖数: 1182
18
求小公司推荐

【在 z****e 的大作中提到】
: 看在你帮我教育了一下那个内分泌失调的家伙的份上
: 我展开说说为啥要去大公司
: 主要不是钱的原因,我之前在的一个小公司
: 总共就那么点人,每个月营业额都上百万,成本一百万一年顶天了
: 不包括人工,然后剩下的钱就大家分
: 但是呢
: 小公司没有系统集成这个概念
: 总共加起来就那么几个系统,集成个屁啊
: 甚至连开发都没有得太多可以做,因为他们做得已经很好了
: bug两周没有一个,我每天瞎混日子,觉得很乏味

J*******n
发帖数: 2901
19
哈哈,我就是喜欢从无到有写代码,读那种被N个人改过N次的既有项目,我每次都有想
吐的感觉,看来还是经验不够啊
从无到有写项目的感觉太好了,尤其是前期设计的阶段

【在 z****e 的大作中提到】
: 看在你帮我教育了一下那个内分泌失调的家伙的份上
: 我展开说说为啥要去大公司
: 主要不是钱的原因,我之前在的一个小公司
: 总共就那么点人,每个月营业额都上百万,成本一百万一年顶天了
: 不包括人工,然后剩下的钱就大家分
: 但是呢
: 小公司没有系统集成这个概念
: 总共加起来就那么几个系统,集成个屁啊
: 甚至连开发都没有得太多可以做,因为他们做得已经很好了
: bug两周没有一个,我每天瞎混日子,觉得很乏味

z*******3
发帖数: 13709
20
我没有深入把后面的问题展开而已
招工广告上写了要求多少经验
如果需要的话,我可以把后面系统集成部分可以大幅度展开
所以我留了个尾巴,说回头再说,但是在玩游戏,先就不写了
如果是junior还更好,我可以慢慢混
上来就是senior,那我会有点小压力

【在 S**********C 的大作中提到】
: 先恭喜了,不过泼个冷水啊,从面试问题的广度和深度来看,
: 这个就是一个有两年工作经验的Junior Developer的要求,你期望可能太高。

相关主题
封装哪个牛人来说一下JSF的前景
说说spring和ejb的差别你们知道jee都有什么吗?
真的还有人用那么heavy的web sphere,jboss么?有做portlet的吗?在client-side用java来做portlet?
进入Java版参与讨论
z*******3
发帖数: 13709
21
现在还有人用abstract class?
全部都是interface了,而且就是interface也不是很多
我后来找了半天,上网还搜了半天
当时想到的api就是swing的adapter
其他的还真不确定,第一反应是httpservlet,后来觉得好像是interface
但是随即想到一个adapter和listener的对比
listener是interface,所以估计adapter就是abstract class
回来找了找,看了看,果然是
概念本身很简单,但是例子不好找,这个我很早以前就留意过了
当时就上网找了半天,结果一直木有什么收获

【在 r***y 的大作中提到】
: agleeeee
: 俺这刚进的一个毕业生被面的时候也不会说abstract的例子不好找, 回答的砍瓜切菜一
: 样利索

z*******3
发帖数: 13709
22
嫌简单是吧?
嘿嘿,我面的大部分都是这样
简单题有,但是后面会逐步深入到整体构架部分
我只是不想把那部分展开而已
有兴趣知道的,看我之前的几个贴
但是我认为,构架部分,一般对方不会问得太深
因为很多人都不懂,说句实话,构架部分不是靠问的
是靠聊天聊出来的,因为只有简单的东西才有标准答案
而且简单的不能错,错一个就挂,也就是什么是abstract class这种
一定要对,不能错,所以这个部分是问,其他的,就是聊
也就是要真问,没有人能保证对,而聊天的时候,知道不知道
这个太容易看出来了,是不是真用过ejb,不需要问问题
就看你自己说,你能不能把ejb的几个接口给举例举出来
没有人能记住所有的东西,但是用过的人肯定能说出一两个来
而一旦说出来了,对方就不会再继续深入问了,因为木有意义
面试就这样,难不难本身并不多重要,可以问得很变态
但是很变态的话,所有人都挂,那就无聊了,所以更多时候聊天聊的是原理

【在 c*******u 的大作中提到】
: 这个面试也太简单了吧。。。
: 我前几天面的一个招junior java developer的面试都比这个难

z*******3
发帖数: 13709
23
这就是难度低啊
从无到有写代码,所有人都会
但是现实情况是没有人有这个条件再去造轮子了
想吐很正常,这就是这个工作难的地方

【在 J*******n 的大作中提到】
: 哈哈,我就是喜欢从无到有写代码,读那种被N个人改过N次的既有项目,我每次都有想
: 吐的感觉,看来还是经验不够啊
: 从无到有写项目的感觉太好了,尤其是前期设计的阶段

i***h
发帖数: 12655
24
哎,这是真心话啊
看着一堆legacy code
都是老人们自己造的轮子
哪里都碰不得,不然一大堆用户案子会报错
头疼

【在 z*******3 的大作中提到】
: 这就是难度低啊
: 从无到有写代码,所有人都会
: 但是现实情况是没有人有这个条件再去造轮子了
: 想吐很正常,这就是这个工作难的地方

S**********C
发帖数: 161
25
"现在还有人用abstract class?全部都是interface了,而且就是interface也不是很
多"
大哥,你确定你写过n年的java? 这两句话听起来非常的外行啊。

【在 z*******3 的大作中提到】
: 现在还有人用abstract class?
: 全部都是interface了,而且就是interface也不是很多
: 我后来找了半天,上网还搜了半天
: 当时想到的api就是swing的adapter
: 其他的还真不确定,第一反应是httpservlet,后来觉得好像是interface
: 但是随即想到一个adapter和listener的对比
: listener是interface,所以估计adapter就是abstract class
: 回来找了找,看了看,果然是
: 概念本身很简单,但是例子不好找,这个我很早以前就留意过了
: 当时就上网找了半天,结果一直木有什么收获

z*******3
发帖数: 13709
26
你还在用abstract class?
哈哈,你不觉得你写代码处处受制么?

【在 S**********C 的大作中提到】
: "现在还有人用abstract class?全部都是interface了,而且就是interface也不是很
: 多"
: 大哥,你确定你写过n年的java? 这两句话听起来非常的外行啊。

z*******3
发帖数: 13709
27
其实你木有看懂我在说什么
你以为我不懂什么是abstract class?
我说的是,这种东西不应该被大规模使用
我后来想了想,struts里面那个action好像是abstract class
但是我以前貌似去查过,又好像不是
如果是的话,所以struts被干掉了,总之不是什么好东西
但是不管怎样,反正现在abstract class用得是越来越少
我要逐步淘汰掉这些东西,interface还是要用的
但是也建议减轻对interface这种东西的依赖
因为只要是继承,耦合度都在增加,依赖都在增强
legacy code之所以难,就难在这些乱七八糟的东西上
时间久了就会发现,找一个结构良好,耦合度低的代码,那简直就跟做梦一样

【在 S**********C 的大作中提到】
: "现在还有人用abstract class?全部都是interface了,而且就是interface也不是很
: 多"
: 大哥,你确定你写过n年的java? 这两句话听起来非常的外行啊。

z*******3
发帖数: 13709
28
我曾经在一个地方干活
因为决定要走了
所以在离职前那么几个月时间
动手把所有代码给改了一遍
强行剥离所有的耦合
那段时间我们组是鸡飞狗跳的
因为三天两头我这边就出一个大的生产bug
最后搞定了,组长已经非常讨厌我了
然后我辞职后把代码交给小弟去做
后来我发现,那个小弟完全没有概念
把我辛辛苦苦搞出来的代码又给弄回去了
写得乱七八糟
让我在离职前反思自己这么做到底是为了什么

【在 i***h 的大作中提到】
: 哎,这是真心话啊
: 看着一堆legacy code
: 都是老人们自己造的轮子
: 哪里都碰不得,不然一大堆用户案子会报错
: 头疼

z*******3
发帖数: 13709
29
很多概念本身并不难
比如abstract class
但是这种是属于被淘汰的部分
基本上我已经不用了
就很像vector,hashtable这种
要说概念,我肯定知道
但是例子,真不好找
还有就是那个suspend
这种都属于被淘汰边缘的技术
除了学习的时候,老师要求,其他时候,谁用这些东西
有些都明确被deprecated了
不是说这些东西难,是要求我说这些东西,本身就反应了一点
就是这一行,legacy code很多
这一行,我前后面了三家公司
一家小的,一家是domestic制霸,最后一家是这片大陆上最大的
区别就好比getafe和竞技马德里和皇家马德里的区别一样
小公司知名度低,而马德里城内都是竞技马德里的球迷,离开马德里
就是皇马的天下了
那家小的,后来进去混了一个月左右,觉得很无聊,他们代码写的很好了
很健壮了,我没有搞头,虽然我不是很喜欢他们的结构
那家domestic的呢,我后来想了想,有机会吹的时候,没有吹
笔试还高分通过,当时知道结果之后有些自大,就木有准备了
稍微有些遗憾,但是这个经验非常重要,我仔细总结了一下
觉得吹还是有必要的,而且很关键,因为对方问问题都是基础
只是一个门槛,但是你吹的时候,才是你展示自己的时候
所以才有了最后一个的面试机会
总得给我感觉,这一行,尤其是后面两家公司,legacy code非常多
什么狗屁都有,就这种感觉
其实java有什么难的呢?每一个部分拆开都不难
但是一汇总,这就是一片海
就像我曾经问过的,我说,为什么sql的问题这么简单?
他说,要问难可以很难,可以很变态,但是没有意义
我们要找的是那种把握宏观的人,而不是对细节记得非常牢的人
而事实上也不可能有人对所有细节都知道得一清二楚
所以每一次面,都有简单问题,但是简单问题是无论如何不能错
错一个就挂,刚来时候我曾经因为把polymorphism写成multimorphism
结果就被干掉了,当初用中文学习的技术术语害死人
一般来说,面试分为这么几个部分
1)java基础,这个部分是一定要对,任何一个问题错,都是致命的
可以小错,尤其是一些偏题,比如ascii码有几位?
还有前面说的abstract class和interface,这都是基础,但是一定会问
不能错,错一个,对方就基本上会结束面试了
2)java进阶,这一部分无非就是各种框架什么的
有可能遇到的就是,这一部分会让默写代码
越小公司越喜欢这么做,这部分重点掌握设计模式
其实很多人真不懂设计模式,真懂设计模式,ejb你会很喜欢
尤其是j2ee core pattern,几乎就是围绕着ejb展开的
所以一般设计模式的问题,这一块我是必胜
例子我经常找swing和ejb,因为很少人用
而且swing是gof模式的大成
3)宏观展开,让你自己说,你会什么
其实这一部分最关键,因为你会不会,人家用过的人心里清楚得很
他们也不想问,问了没意思,让你自己发挥,没有用ejb的人
你就是说用过,对方也容易摸透你的底细
要是我去面试别人,单纯技术问题,我也不会搞得太复杂
但是聊天的时候,我可以把你底细摸得一清二楚
都是这一行的人,你有多少水平,对方会不知道?
所以对方不会刁难你,但是你到底有多少水平,人家是很清楚的
所以一般笔试都不会太麻烦,聊天才是主要的
这个也是我经过那次没有吹就挂掉的经历后总结出来的
对方广告上往往会写了一堆概念,而且不具体说是哪个部分你要掌握
我的策略是,我要把这些概念全部cover住,而且要说出原理来
其实聊天的主题不是什么abstract class,那几个问题十分钟不到就over了
主题集中在如何做系统集成,比如eai的几种方式
这个我是通过实例来阐释如何做eai的,比如一开始是通过分享数据库,就像erp一样
然后通过web service包装,最后利用bpel来集成,将来扩展的话会利用上esb
简单吗?这是我开场就说的东西,而且我不怕展开,对方也的确试探了一下
后来貌似发现这部分我是有备而来,就不再问了
而对方也把我对测试部分不太熟悉的这个细节给摸到了
两个问题就结束了,对方就总结出来了
看来这个测试是另外一个组做的,他不太熟悉
很准确,内行不知道我的技术底细,这个是一个joke
对方的技术底细我也摸出来了,他们的一个软肋就是swing没有用过
因为我举adapter例子的时候,特意注意到了对方的表情
虽然很快就掩饰过去了,但是我觉得对方应该是不懂swing
其他部分都还好,都多少用过,但是对真正大方向上,原理还需要加强
不是不懂,但是没有另外一个本版id熟悉
还有就是,对方对marker interface不熟悉
因为我说marker interface的时候,我也留意到了对方的表情
还有对方对bpel这个概念并不熟悉,可能是没用过,因为对方说错了
不过没什么了,大部分概念都懂,不是普通内行人,将来一起干活会很愉快
i***h
发帖数: 12655
30
操,你太不professional了,是在小公司吧
我要这么搞,一年好几千万的产品,老板估计直接把我开了

【在 z*******3 的大作中提到】
: 我曾经在一个地方干活
: 因为决定要走了
: 所以在离职前那么几个月时间
: 动手把所有代码给改了一遍
: 强行剥离所有的耦合
: 那段时间我们组是鸡飞狗跳的
: 因为三天两头我这边就出一个大的生产bug
: 最后搞定了,组长已经非常讨厌我了
: 然后我辞职后把代码交给小弟去做
: 后来我发现,那个小弟完全没有概念

相关主题
一个server如果想把一些api作为public,一些作为private,一般都有什么办法?JEE 6 看起来不错
Struts基本思路请教是不是spring mvc用的很少
一个土土的问题再论abstract class
进入Java版参与讨论
D******5
发帖数: 577
31
cong
z*******3
发帖数: 13709
32
不会,因为我本身被安排去搞什么就是考虑这个东西是一个烂摊子
领导本身也做好了我出错的准备
然后安全运行了一段时间之后,领导很开心,那年优秀就是这么拿到的
但是我怎么看那些东西怎么不喜欢
之前因为饭碗的缘故,所以小心翼翼
后来因为决定要滚蛋了,所以马上开始修理这些东西
不是小公司,大公司,无所谓了,因为做的不是产品
所以错了也没啥大不了的,再说,大公司错的还少么?
我后来反思了一下我这么多年,发现自己是经常接烂摊子的

【在 i***h 的大作中提到】
: 操,你太不professional了,是在小公司吧
: 我要这么搞,一年好几千万的产品,老板估计直接把我开了

i***h
发帖数: 12655
33
不管是不是烂摊子
不用对用户负责的就是好摊子

【在 z*******3 的大作中提到】
: 不会,因为我本身被安排去搞什么就是考虑这个东西是一个烂摊子
: 领导本身也做好了我出错的准备
: 然后安全运行了一段时间之后,领导很开心,那年优秀就是这么拿到的
: 但是我怎么看那些东西怎么不喜欢
: 之前因为饭碗的缘故,所以小心翼翼
: 后来因为决定要滚蛋了,所以马上开始修理这些东西
: 不是小公司,大公司,无所谓了,因为做的不是产品
: 所以错了也没啥大不了的,再说,大公司错的还少么?
: 我后来反思了一下我这么多年,发现自己是经常接烂摊子的

z*******3
发帖数: 13709
34
这种八卦的鸟贴居然这么多人看
真正讨论技术的贴没什么人看,也没什么人回
z*******3
发帖数: 13709
35
要负责的,我只是不怕负责了
大公司嘛,开除员工比较墨迹,要年终考核不行
次年再考核不行,才会考虑开除
我几个月就走了,所以破罐子破摔,无所谓了

【在 i***h 的大作中提到】
: 不管是不是烂摊子
: 不用对用户负责的就是好摊子

r***y
发帖数: 4379
36
哥们, 估计你面是高帅富架构师, 不是穷屌丝码工的料
现在随便一个知名的开源框架/库, 比如 spring, hibernate, google guava...
你翻翻源码看, 有多少 abstract classes...

【在 z*******3 的大作中提到】
: 现在还有人用abstract class?
: 全部都是interface了,而且就是interface也不是很多
: 我后来找了半天,上网还搜了半天
: 当时想到的api就是swing的adapter
: 其他的还真不确定,第一反应是httpservlet,后来觉得好像是interface
: 但是随即想到一个adapter和listener的对比
: listener是interface,所以估计adapter就是abstract class
: 回来找了找,看了看,果然是
: 概念本身很简单,但是例子不好找,这个我很早以前就留意过了
: 当时就上网找了半天,结果一直木有什么收获

z*******3
发帖数: 13709
37
是啊,问题在于你的工作是去写这些框架?
不是吧,多数时候都是用用了事吧
这种痛苦的东西,留给别人去做了

【在 r***y 的大作中提到】
: 哥们, 估计你面是高帅富架构师, 不是穷屌丝码工的料
: 现在随便一个知名的开源框架/库, 比如 spring, hibernate, google guava...
: 你翻翻源码看, 有多少 abstract classes...

z*******3
发帖数: 13709
38
我吃饭去了
其实俺找的,是宿主,跟在美帝工作不一样
美帝工作,通知layoff,半个小时后就由保安送着出门了
这搞什么飞机,在高福利国家
要滚蛋,哪怕是试用期,都要提前一周通知才行
而且随着工作年限的增加,赔偿金也越来越高
所以一般这里的公司都不愿意随便裁员
不少公司都是一堆老头,天天聊退休
所以考虑机会的时候,看看这个公司能survive多久才是关键
真要钱还不容易,随便找两个contract干干
怎么说一年工资十五六万没啥问题
但是政府抽俺40%的税
我这么拼命干活这不有病嘛?
而且将来娃的教育我想好了
如果这个孩子很聪明,我不push都能上好学校
那也不用去爬藤,去mcgill的medical school我看蛮好
如果一般般,找个local的大学,混个正经的engineering学位就好了
不管哪种选择,学费也都不贵,政府都有补贴
教育医疗还有住房
住房我算了下,并不贵,国内房子卖掉一套就够了
所以我现在实在是没有任何动力拼命赚钱
跟在美帝时候不一样了,好好enjoy这里的sunshine才是正事
拼命干活这种事,留给别人去做吧,我已经懒了
J*******n
发帖数: 2901
39
估计你是总改别人做的东西所以abstract class用的少吧~~ 自己设计项目设计API的时
候,interface当然是必须的,另外为了最大限度reuse code和规范未来partner使用自
己设计的API,abstract class是很常见的啊
S**********C
发帖数: 161
40
真服了,看来你完全没有领会到Abstract Classs和Interface为什么存在,
不是说你不写这些新的框架,就不需要用这个,他们代表的是一种软件的设计思想,
(不是任何一个系统都是做个web,然后来个database CRUD就完了)
咱不要言必称EJB,Pattern,BPEL,EAI,balabala了,先拿最简单的讨论,
java.util.xxx 里面的AbstractList,AbstractMap这些如果不写成Abstract class,
java.sql.xxx 里面的ResultSet,Statement这些如果不写成interface,
很想请教一下你的高见,你有什么更好的方法去写?

【在 z*******3 的大作中提到】
: 是啊,问题在于你的工作是去写这些框架?
: 不是吧,多数时候都是用用了事吧
: 这种痛苦的东西,留给别人去做了

相关主题
再论abstract classannotation question
interface可不可以有variable?spring Annotation based configuration
Java Play Framework 和 Spring 比较一下? (转载)现在有些迷惑了
进入Java版参与讨论
S**********C
发帖数: 161
41
我就接手过一个阿三写的系统,简直不敢相信自己的眼睛,
no interface,no abstract class,no what so ever,一个class 3000-4000行,
no way to unit-test, no way to add/debug feature easily.
最后花时间重写了。
重写那段时间让我想起以前公司一个architect(水平非常高)说过的一句话,
You add a pile of shit to another pile of shit,it just become a bigger pile
of shit。
我可不想每天在粪坑里被折磨。

【在 J*******n 的大作中提到】
: 估计你是总改别人做的东西所以abstract class用的少吧~~ 自己设计项目设计API的时
: 候,interface当然是必须的,另外为了最大限度reuse code和规范未来partner使用自
: 己设计的API,abstract class是很常见的啊

z*******3
发帖数: 13709
42
不是我没有领悟到它们为什么存在
是你没有领悟到它们为什么应该不存在
你想想为什么会有reflection和annotation
原先的问题是让给出一个abstract class的实例来
不是问如何写一个abstract class
既然你说了java.util,那我问你,是list这个接口常用还是abstractlist常用?
你是写成list l = new arraylist还是abstractlist l = new arraylist?
我想的是如何减轻对于这些乱七八糟类的依赖
而不是讨论为什么它们会存在
它们是存在,但是这是历史的必经阶段,并不代表以后人们都得用这种东西

【在 S**********C 的大作中提到】
: 真服了,看来你完全没有领会到Abstract Classs和Interface为什么存在,
: 不是说你不写这些新的框架,就不需要用这个,他们代表的是一种软件的设计思想,
: (不是任何一个系统都是做个web,然后来个database CRUD就完了)
: 咱不要言必称EJB,Pattern,BPEL,EAI,balabala了,先拿最简单的讨论,
: java.util.xxx 里面的AbstractList,AbstractMap这些如果不写成Abstract class,
: java.sql.xxx 里面的ResultSet,Statement这些如果不写成interface,
: 很想请教一下你的高见,你有什么更好的方法去写?

z*******3
发帖数: 13709
43
这压根不是abstract class的问题
是这个阿三懒,把所有代码写到一起去的问题
如果你看看swing,看看里面的那些狗屁
当你看到一个
class extends applet implements runnable, keylistener, mouselistener
的时候你会有种直接想拿起东西砸人的冲动
我都不需要看它写了多少行,我只好看到这一行我就想抽人
什么狗屁,写了这么多在这里面
用interface一样写出一堆垃圾的大有人在
这跟interface没有任何关系
ejb最早就是利用interface去要求群众去实现
结果群众拒绝接受,太复杂,这不是我这么认为的
是事实上就是这么发生的,不信你自己看看ejb1.0的版本
是不是只有interface?

pile

【在 S**********C 的大作中提到】
: 我就接手过一个阿三写的系统,简直不敢相信自己的眼睛,
: no interface,no abstract class,no what so ever,一个class 3000-4000行,
: no way to unit-test, no way to add/debug feature easily.
: 最后花时间重写了。
: 重写那段时间让我想起以前公司一个architect(水平非常高)说过的一句话,
: You add a pile of shit to another pile of shit,it just become a bigger pile
: of shit。
: 我可不想每天在粪坑里被折磨。

S**********C
发帖数: 161
44
不要打太极了,就直接讨论一下如果不写成这样,你觉得可以怎么写吧,
BTW, 我不觉得reflection和annotation跟这个有很大的关系。

【在 z*******3 的大作中提到】
: 不是我没有领悟到它们为什么存在
: 是你没有领悟到它们为什么应该不存在
: 你想想为什么会有reflection和annotation
: 原先的问题是让给出一个abstract class的实例来
: 不是问如何写一个abstract class
: 既然你说了java.util,那我问你,是list这个接口常用还是abstractlist常用?
: 你是写成list l = new arraylist还是abstractlist l = new arraylist?
: 我想的是如何减轻对于这些乱七八糟类的依赖
: 而不是讨论为什么它们会存在
: 它们是存在,但是这是历史的必经阶段,并不代表以后人们都得用这种东西

z*******3
发帖数: 13709
45
interface是必需的
但是可以尽量减轻啊
那么喜欢interface的你
为什么那么讨厌ejb呢?
你没有想过ejb和spring的重要区别在哪里吗?
哈哈,不是我不懂,是我见多了,习惯得都已经麻木了
要我写一个abstract class太容易了
但是原来得问题是,你举个例子,不是让你去写一个abstract class
那我举例也好歹找一个常用得来说吧?
adapter算是我能找到得比较常用得abstract class了
另外赞你们自己写api

【在 J*******n 的大作中提到】
: 估计你是总改别人做的东西所以abstract class用的少吧~~ 自己设计项目设计API的时
: 候,interface当然是必须的,另外为了最大限度reuse code和规范未来partner使用自
: 己设计的API,abstract class是很常见的啊

z*******3
发帖数: 13709
46
这么说
你回去看看原帖
我在说说什么
我说的是,人家让我举例,我有些想不起来
我后来的意思是,在实际应用中,你完全可以不用这个东西
你自己想当然的以为我不懂abstract class
然后一堆展开,吃饱了撑着,你应该回头去看我最早在说什么ok?
btw的部分,你果然是不懂,我猜对了

【在 S**********C 的大作中提到】
: 不要打太极了,就直接讨论一下如果不写成这样,你觉得可以怎么写吧,
: BTW, 我不觉得reflection和annotation跟这个有很大的关系。

z*******3
发帖数: 13709
47
人家的意思是
让你举出一个abstract class的例子
当然我知道框架什么一堆源代码里面很多abstract class
但是问题是,你平常用么?
你没事去abstractlist l = new arraylist吗?
这不是有病嘛
你要给人例子,好歹也得想想你什么用这个东西啊
adapter好歹写swing得时候常用
其他的abstract class你用?行了吧
看前面例子都举到源代码里面去了,可见不是我一个人觉得例子不太好找
u****s
发帖数: 2186
48
很明显

【在 S**********C 的大作中提到】
: 真服了,看来你完全没有领会到Abstract Classs和Interface为什么存在,
: 不是说你不写这些新的框架,就不需要用这个,他们代表的是一种软件的设计思想,
: (不是任何一个系统都是做个web,然后来个database CRUD就完了)
: 咱不要言必称EJB,Pattern,BPEL,EAI,balabala了,先拿最简单的讨论,
: java.util.xxx 里面的AbstractList,AbstractMap这些如果不写成Abstract class,
: java.sql.xxx 里面的ResultSet,Statement这些如果不写成interface,
: 很想请教一下你的高见,你有什么更好的方法去写?

z*******3
发帖数: 13709
49
吃了点生煎包
出去晒太阳了
其实abstract class和interface
都不过是一个单机的玩意
实际上后面对interface在不同虚拟机上的调用
搞出了rmi,rmi也不过是一个interface
然后rmi基础之上搞出了ejb
其实ejb说到底不过是一堆interface的定义
难道不是么?但是群众觉得太复杂
interface尚且如此,更何况是abstract class
说到底就是那个技术帖说的
当环境变化之后,你怎么可能要求别人的虚拟机跟你有同样的class?
这是一个joke
所以一个框架里面可能会出现abstract class,这没错
因为就是那么点人自己在搞,但是对外的接口
interface已经很离谱了,后来流行的趋势是用xml+reflection来替换这些东西
这就是为什么spring能够火起来的原因
再后来,xml都嫌太复杂,因为纠错什么很不方便
于是用annotation来搞,其实reflection和annotation能做的
理论上abstract class早就能做了,问题在于
你怎么能要求别人去继承你的abstract class?
这就是依赖啊,你想想看如果所有的你写的类
都被要求继承spring给出的一个abstract class
会有什么后果?实际上spring用这种方式完全可以实现xml配置文件里面写的所有功能
但是它不这么做,为什么?
u****s
发帖数: 2186
50
哥儿们别再纠缠这个了
congrats你的offer 自己满意最重要

【在 z*******3 的大作中提到】
: 人家的意思是
: 让你举出一个abstract class的例子
: 当然我知道框架什么一堆源代码里面很多abstract class
: 但是问题是,你平常用么?
: 你没事去abstractlist l = new arraylist吗?
: 这不是有病嘛
: 你要给人例子,好歹也得想想你什么用这个东西啊
: adapter好歹写swing得时候常用
: 其他的abstract class你用?行了吧
: 看前面例子都举到源代码里面去了,可见不是我一个人觉得例子不太好找

相关主题
Re: Anyone interested in starting our own EJB vender company?说说spring和ejb的差别
有没有对EAI,JCA熟悉的?真的还有人用那么heavy的web sphere,jboss么?
封装哪个牛人来说一下JSF的前景
进入Java版参与讨论
z*******3
发帖数: 13709
51
那个offer已经不重要了
关键是很多人还是不懂为什么要搞j2ee
这才是真正有趣的部分,offer本身没有意义
回到当初pojo的讨论
为什么会有spring这种东西存在?
因为spring不要求用户继承任何的class或者是interface
所以spring超火爆,丫太爽了,这个东西居然不要求我继承这个继承那个
跟当初煞笔的ejb不一样,什么都要我去继承
继承的越多,各种条条框框就越多
写起来就束手束脚的,最后都不知道在写什么
改一个还怕把别人的东西给弄错了
abstract这个关键字存在有其历史原因
但是随着时间的发展,人们在用其他东西来替换这个东西
使得整个结构更加简洁明了,依赖更低
不是我不懂过去,是有些人看不到将来

【在 u****s 的大作中提到】
: 哥儿们别再纠缠这个了
: congrats你的offer 自己满意最重要

J*******n
发帖数: 2901
52
首先我不讨厌ejb啊,我以前在你某个帖子里有说过我入行时间短,没机会接触过ejb
,一直对ejb有一个过于heavy的印象(显然是错误的),但是从没有断言过ejb不好,
更不用谈喜不喜欢了
第二我没说你不懂。。
你认为abstract class没什么必要,interface尽量减轻,可以理解,Eclipse e4就是
重annotation,轻inheritance,确实挺简洁的。只是大家自己写的时候还是更
习惯于用interface, abstract class这些吧
另外,自己写API没什么啊 ,从头开发java系统都是要自己设计和实现API的吧,有些
是开放给未来的partner以及support team的,有些是一个模块开放给其他模块的,不
然怎么降低模块间的耦合度,以及提供service给partner呢

【在 z*******3 的大作中提到】
: interface是必需的
: 但是可以尽量减轻啊
: 那么喜欢interface的你
: 为什么那么讨厌ejb呢?
: 你没有想过ejb和spring的重要区别在哪里吗?
: 哈哈,不是我不懂,是我见多了,习惯得都已经麻木了
: 要我写一个abstract class太容易了
: 但是原来得问题是,你举个例子,不是让你去写一个abstract class
: 那我举例也好歹找一个常用得来说吧?
: adapter算是我能找到得比较常用得abstract class了

z*******3
发帖数: 13709
53
回到最原始的问题
来,给我一个abstract class的例子
别告诉我在源码里面找
没有人保证要看源码
这是一,也别告诉我如何去实现abstract class
我要的是实例,给一个常用的来

ejb

【在 J*******n 的大作中提到】
: 首先我不讨厌ejb啊,我以前在你某个帖子里有说过我入行时间短,没机会接触过ejb
: ,一直对ejb有一个过于heavy的印象(显然是错误的),但是从没有断言过ejb不好,
: 更不用谈喜不喜欢了
: 第二我没说你不懂。。
: 你认为abstract class没什么必要,interface尽量减轻,可以理解,Eclipse e4就是
: 重annotation,轻inheritance,确实挺简洁的。只是大家自己写的时候还是更
: 习惯于用interface, abstract class这些吧
: 另外,自己写API没什么啊 ,从头开发java系统都是要自己设计和实现API的吧,有些
: 是开放给未来的partner以及support team的,有些是一个模块开放给其他模块的,不
: 然怎么降低模块间的耦合度,以及提供service给partner呢

J*******n
发帖数: 2901
54
哈哈,我刚才在写一个例子,码了几行字以后发现没有意义,所有基于inheritance的
API都是可以用annotation代替的,只是如果自己写的项目要支持annotation的话,得
比直接用interface,abstract class要多写点东西罢了,比如怎么也得支持class的注
册吧,比如extension point什么的,然后injection也都得定义,这么搞我没亲手搞过
,但例子那么多,绝对是可行的就是了
算了,还是把没写完的例子写完发上来吧,欢迎大家拍砖指教
有一个interface,叫LifeCycle,定义了4个method,分别是
void initialize(Configuration)
void suspend()
void resume()
void destroy()
每个Component的presenter都implement这个接口,每个Component的initialize方法实
现不一样,其他3个方法实现都一样(比如suspend方法都是会fire
ComponentSuspendedEvent等等),这样我就搞了一个AbstractComponentPresenter,
把共同的3个方法的implementation写好,这样在文档里面注明,以后哪个partner要开
发自己的Component,请继承我的AbstractComponentPresenter,这样你就不要担心
high level的eventing
像我在上面第一段说的,要改成不用interface以及abstract class完全可行,但是用
interface以及abstract class也是挺干净的,有的时候对使用你设计的API的人有些限
制也不错,毕竟这样对大多数java developer来说简单直观。一句话,具体是用
inheritance based还是annotation based还是依据需要而定
欢迎大家指教

【在 z*******3 的大作中提到】
: 回到最原始的问题
: 来,给我一个abstract class的例子
: 别告诉我在源码里面找
: 没有人保证要看源码
: 这是一,也别告诉我如何去实现abstract class
: 我要的是实例,给一个常用的来
:
: ejb

z*******3
发帖数: 13709
55
java编码最高的原则是让别人轻松看懂你的代码
而不是一堆的废话,又找这个又找那个的
你看别人代码的时候,你觉得找东西很容易么?
或者说阿三在旁边跟你说,找这个找那个,你不觉得他很欠揍吗?
但是我相信阿三觉得找他自己的代码很容易
而且他能告诉你在文档的哪个位置,只是你没找到而已
或者说你找到了,你英语太差,看不懂而已
就你这个例子
LifeCycle <- AbstractComponentPresenter <- LifeCycleImpl
你这个abstract class的命名跟interface一点关系都没有
这要多天才的人才能想到我在写LifeCycleImpl的时候需要继承的是
AbstractComponentPresenter
而不是LifeCycle
我为什么那么费劲地去找那个什么AbstractComponentPresenter
而不直接继承所有的方法?大不了我把其他三个留空不就好了
其实做到这一步已经是ejb曾经做过的,但是还是失败了
需要优化
再看看你的方法,把config放到构造器中去,这到底是一个什么东西?
factory还是products?
构造模式没有学好,先拆分原方法
一个方法做了两件事,毫无必要
分成两个方法把init(config)改成setConfig(config)和init()这两个方法
只不过说,如果你不setConfig的话,initi无法完成会抛异常
再优化一下,把LifeCycle变成一个Configuration的方法返回值
通过Configuration.buildLifeCycle()来获取一个LifeCycle的instance
熟悉吧?想到我在说什么了吧?
对啊,hibernate的buildsessionfactory和opensession啊
gavin king亲手写的啊
维护代码的时候,最讨厌的就是乱七八糟的继承关系
一层两层都还好,四五层就想杀人了
一般找过四五层之后,人就遗忘之前到底在找什么
所以复杂关系一定要剥离,后面的人会感激你的
两层是最理想的关系,也就是一个interface/abstract class,和一个concrete class
你看设计模式里面,结构模式,继承关系有超过三层的模式么?
结构模式是gof的设计模式里面最复杂的了,其他两种都简单
最难尚且如此简单,更何况其他的
说句不好听的,还能有比n层继承更shitty东西么?
我写过swing,知道什么是真正的shit
我见识过5000行的shit,那5000行还继承了n多东西
而且他写的不过是一个japplet

【在 J*******n 的大作中提到】
: 哈哈,我刚才在写一个例子,码了几行字以后发现没有意义,所有基于inheritance的
: API都是可以用annotation代替的,只是如果自己写的项目要支持annotation的话,得
: 比直接用interface,abstract class要多写点东西罢了,比如怎么也得支持class的注
: 册吧,比如extension point什么的,然后injection也都得定义,这么搞我没亲手搞过
: ,但例子那么多,绝对是可行的就是了
: 算了,还是把没写完的例子写完发上来吧,欢迎大家拍砖指教
: 有一个interface,叫LifeCycle,定义了4个method,分别是
: void initialize(Configuration)
: void suspend()
: void resume()

z*******3
发帖数: 13709
56
认真看看swing和ejb
这里面有你最喜欢的各种奇淫技巧
你能想到的,这里面都有
abstract class这都是小意思,不算什么
各种狗屁不通的patterns才是里面的奇芭
你要是找不到,发出来
我来告诉你,他们是怎么搞的
然后这两个都华丽地失败了
琢磨琢磨为什么

【在 J*******n 的大作中提到】
: 哈哈,我刚才在写一个例子,码了几行字以后发现没有意义,所有基于inheritance的
: API都是可以用annotation代替的,只是如果自己写的项目要支持annotation的话,得
: 比直接用interface,abstract class要多写点东西罢了,比如怎么也得支持class的注
: 册吧,比如extension point什么的,然后injection也都得定义,这么搞我没亲手搞过
: ,但例子那么多,绝对是可行的就是了
: 算了,还是把没写完的例子写完发上来吧,欢迎大家拍砖指教
: 有一个interface,叫LifeCycle,定义了4个method,分别是
: void initialize(Configuration)
: void suspend()
: void resume()

u****s
发帖数: 2186
57
您老真是术业有专攻。但还是没有明白abstract class

【在 z*******3 的大作中提到】
: 认真看看swing和ejb
: 这里面有你最喜欢的各种奇淫技巧
: 你能想到的,这里面都有
: abstract class这都是小意思,不算什么
: 各种狗屁不通的patterns才是里面的奇芭
: 你要是找不到,发出来
: 我来告诉你,他们是怎么搞的
: 然后这两个都华丽地失败了
: 琢磨琢磨为什么

S**********C
发帖数: 161
58
没错,annotation是对class提供一定的meta-data,这种对于configuration很heavy的
app是提供了方便,但因此说annotation的出现颠覆了interface,甚至取代了
interface就有点.....不如你写信问问人家当年推出annotation的初衷是什么吧.
另外一方面,没错,你用spring是用到很多annotation,但开发spring本身,不是还用
了很多interface,照你的观点,干嘛不全用annotation啊。

【在 z*******3 的大作中提到】
: 这么说
: 你回去看看原帖
: 我在说说什么
: 我说的是,人家让我举例,我有些想不起来
: 我后来的意思是,在实际应用中,你完全可以不用这个东西
: 你自己想当然的以为我不懂abstract class
: 然后一堆展开,吃饱了撑着,你应该回头去看我最早在说什么ok?
: btw的部分,你果然是不懂,我猜对了

S**********C
发帖数: 161
59
你号称写了10几年java,但居然不能从自己做过的项目里面随便举一个例子说怎么用
abstract class? 大哥你天生就是architect啊,言必称EJB,BPEL, EAI,Web Services.
..怎么玄乎怎么来。

【在 z*******3 的大作中提到】
: 回到最原始的问题
: 来,给我一个abstract class的例子
: 别告诉我在源码里面找
: 没有人保证要看源码
: 这是一,也别告诉我如何去实现abstract class
: 我要的是实例,给一个常用的来
:
: ejb

S****h
发帖数: 558
60
I don't get it. It is most likely that suspend()/resume()/destroy() has
some calls to abstract methods of the class. These methods then define the
different behavior of the concrete classes. This can be easily done with
inheriting the abstract class and implementing those abstract method. How
do you do that without the abstract class sitting in between interface and
the concrete classes. One alternative way I can think is to extract those
method as a strategy class and then inject them in. Do you refer to
something like that? Please enlighten me. Thanks.

【在 z*******3 的大作中提到】
: java编码最高的原则是让别人轻松看懂你的代码
: 而不是一堆的废话,又找这个又找那个的
: 你看别人代码的时候,你觉得找东西很容易么?
: 或者说阿三在旁边跟你说,找这个找那个,你不觉得他很欠揍吗?
: 但是我相信阿三觉得找他自己的代码很容易
: 而且他能告诉你在文档的哪个位置,只是你没找到而已
: 或者说你找到了,你英语太差,看不懂而已
: 就你这个例子
: LifeCycle <- AbstractComponentPresenter <- LifeCycleImpl
: 你这个abstract class的命名跟interface一点关系都没有

相关主题
你们知道jee都有什么吗?Struts基本思路请教
有做portlet的吗?在client-side用java来做portlet?一个土土的问题
一个server如果想把一些api作为public,一些作为private,一般都有什么办法?JEE 6 看起来不错
进入Java版参与讨论
J*******n
发帖数: 2901
61
有一点我是同意你的看法的,继承关系慢慢地在被annotation/injection based API所
替代,现在有些开源的技术,因为要应对大量用户各种各样不同的需求,这时候对灵活
性的要求非常高,如果还要求用户必须继承抽象类甚至实体类是有一些不必要的限制的
。而在大多数不要求应对大量用户需求的Java项目,继承关系还是非常简单直观的一种
实现方式,尽量减少层次当然是好的,但从接口到实体类,3-5层的继承不至于会变得
多shitty,代码得到了很好的reuse,要改起来也方便
我这个abstract class的实例是经过一些简化的,因为我以为你只是要我举个简单的例
子然后展示一下怎么转换成annotation based,结果获得了一些关于我API设计的评论
。。
关于abstract class命名,我这个AbstractComponentPresenter还implement了好几个
接口,比如Configurable,HasConfigurationChangeEventHandlers,
HasStateChangeEventHandlers,ComponentConstants等等,难道我应该至少叫它
AbstractConfigurableLifecycleComponentPresenter?每个component都有lifecycle
,且都是configurable的,这很好理解吧。。不管谁要用我的API或者要接手我的项目
,总是要读一下我的设计文档和代码注释吧。即使我用了annotation,你也得知道init
方法的annotation是@init还是@initialize吧
关于把config放到构造器中的问题,其实我有设计一个ConfigurationManager类专门负
责Configuration的CRUD,init(Configuration)是overload方法,这个
Configuration就是个由Configuration Manager处理过的JSON Object,另外也有不带
参数的init()
“再优化一下,把LifeCycle变成一个Configuration的方法返回值
通过Configuration.buildLifeCycle()来获取一个LifeCycle的instance” 这句评论我
暂时还理解不了,还得消化消化
其他的评论,有谈到了阿三,ejb,hibernate,gavin king,gof的设计模式,比n层继
承更shitty东西,我就略过了

【在 z*******3 的大作中提到】
: java编码最高的原则是让别人轻松看懂你的代码
: 而不是一堆的废话,又找这个又找那个的
: 你看别人代码的时候,你觉得找东西很容易么?
: 或者说阿三在旁边跟你说,找这个找那个,你不觉得他很欠揍吗?
: 但是我相信阿三觉得找他自己的代码很容易
: 而且他能告诉你在文档的哪个位置,只是你没找到而已
: 或者说你找到了,你英语太差,看不懂而已
: 就你这个例子
: LifeCycle <- AbstractComponentPresenter <- LifeCycleImpl
: 你这个abstract class的命名跟interface一点关系都没有

z*******3
发帖数: 13709
62
再说一次
我没有说要完全抛弃interface
我只是说,现在很多interface得功能被其他功能所取代
而其他功能的本意就是为了不让用户再吃饱了去做这些无聊的东西
我说的不是过去,而是将来
你是不是还是不懂我在说什么?
另外再给你强调一次,我做的不是framework
我相信你也不是做framework的料
所以你强调这些东西只有一个意思,装逼

【在 S**********C 的大作中提到】
: 没错,annotation是对class提供一定的meta-data,这种对于configuration很heavy的
: app是提供了方便,但因此说annotation的出现颠覆了interface,甚至取代了
: interface就有点.....不如你写信问问人家当年推出annotation的初衷是什么吧.
: 另外一方面,没错,你用spring是用到很多annotation,但开发spring本身,不是还用
: 了很多interface,照你的观点,干嘛不全用annotation啊。

z*******3
发帖数: 13709
63
这么说吧
我对于原来那个问题的感觉
就不是自己去构造一个abstract class
而是从api中找一个出来
可能我对原问题理解有误
但是我认为
原问题有两个层次
第一个层次就是问你什么是abstract class
这个很简单,第二个问题是举例
那么如果你举的例子是你写的一个abstract class的话
那么这个在我看来是不合格的举例
我希望找到的是那种大家都知道的类
比如说marker interface,我说serializable
比如说iterator,我说Iterator class
比如说多线程,我说runnable
这叫举例, 不是你去写一个出来,事实上我也尝试着用这个方法去绕过原问题
人家很敏锐滴觉察到我的意图,重复了一遍,你能给我一个例子么?
对方意思不是让你自己去写,而是要你给一个常用的类出来
所以我一时有些难以言对,后来想到了adapter
就看你们几个blablabla了这么多,说句不客气的
你们有一个举出比我的这个adapter更合适更容易接受的例子么?
你bla了这么多,说了半天不还是找不出来么?

Services.

【在 S**********C 的大作中提到】
: 你号称写了10几年java,但居然不能从自己做过的项目里面随便举一个例子说怎么用
: abstract class? 大哥你天生就是architect啊,言必称EJB,BPEL, EAI,Web Services.
: ..怎么玄乎怎么来。

z*******3
发帖数: 13709
64
另外我毕业都还没10年,去哪里写了10年的java
我从来没说过这话

Services.

【在 S**********C 的大作中提到】
: 你号称写了10几年java,但居然不能从自己做过的项目里面随便举一个例子说怎么用
: abstract class? 大哥你天生就是architect啊,言必称EJB,BPEL, EAI,Web Services.
: ..怎么玄乎怎么来。

z*******3
发帖数: 13709
65
要不你展开说说我怎么没看明白
搞得你很懂一样,那你给一个例子吧
abstract class,常用的api中类找一个出来

【在 u****s 的大作中提到】
: 您老真是术业有专攻。但还是没有明白abstract class
z*******3
发帖数: 13709
66
这是最早想到的,很早以前就想的
thread
这是一个abstract class吗?
其实不是啊,这是一个concrete class
你说的这几个方法都deprecated了
你们说的都是我想过的,我第一个猜测也是猜thread那边应该有一个abstract class
但是后来找了找,thread和runnable都不是啊
然后你说的其实是override,不是abstract本身
是个class就可以override,所以这个例子还是不行

How
those

【在 S****h 的大作中提到】
: I don't get it. It is most likely that suspend()/resume()/destroy() has
: some calls to abstract methods of the class. These methods then define the
: different behavior of the concrete classes. This can be easily done with
: inheriting the abstract class and implementing those abstract method. How
: do you do that without the abstract class sitting in between interface and
: the concrete classes. One alternative way I can think is to extract those
: method as a strategy class and then inject them in. Do you refer to
: something like that? Please enlighten me. Thanks.

z*******3
发帖数: 13709
67
对,没错,就这个意思,其实你前面就已经清楚我在说什么了
再往前有人一点就透,而有些人就是反反复复不明白我在说什么
Configuration.buildlifecycle可以参考Configuration.buildsessionfactory方法
config部分和构造的部分要拆开实现,卷到一起去会很麻烦
abstract class存在是一个进步,但是人类在继续发展,现在有更好的方法予以处理
尤其是对于用户来说,当然如果你做的是底层的那些东西,那很多东西还是没有办法替代
但是就像我们已经不再写c一样,java很多底层功能也可以被替换掉
当然为了防止有人吹毛求p,我再强调一次,我不是说这些东西可以完全扔掉
而是说,现在人们 可以不再如此广泛滴使用这些功能,而去使用其他更为便捷的功能
这也是为什么我突然会觉得这个举例有难度的主要原因
因为我不用很久了,所以要举例突然有些觉得找不到例子

【在 J*******n 的大作中提到】
: 有一点我是同意你的看法的,继承关系慢慢地在被annotation/injection based API所
: 替代,现在有些开源的技术,因为要应对大量用户各种各样不同的需求,这时候对灵活
: 性的要求非常高,如果还要求用户必须继承抽象类甚至实体类是有一些不必要的限制的
: 。而在大多数不要求应对大量用户需求的Java项目,继承关系还是非常简单直观的一种
: 实现方式,尽量减少层次当然是好的,但从接口到实体类,3-5层的继承不至于会变得
: 多shitty,代码得到了很好的reuse,要改起来也方便
: 我这个abstract class的实例是经过一些简化的,因为我以为你只是要我举个简单的例
: 子然后展示一下怎么转换成annotation based,结果获得了一些关于我API设计的评论
: 。。
: 关于abstract class命名,我这个AbstractComponentPresenter还implement了好几个

z*******3
发帖数: 13709
68
写swing写久了你就知道
其实不建议你一个class 去 implements一堆的接口
这样貌似很清晰,其实很容易使得你的class膨胀
尤其是当你的接口有多个不同的要求的时候
就很痛苦,5000行的japplet就是这么搞出来的
所以人们尝试着在大的方向上去切分shit
而不是通过这些声明去切分shit,这样切到最后shit还是shit
这也是为什么会有spring这些东西的原因
因为人们希望通过更简单的方式去切割shit
swing是个好东西,因为看swing代码可以看到真正的shit
j2ee其他部分相比之下切割得很干净,所以shit不多见
但是swing,哪怕是教科书上,都有一堆的shit
国内很多java教科书上swing的代码全部都是shit
举个例子
class MyShit extends JApplet imeplements ActionListener, Runnable
就这么简单一行,shit就诞生了,因为一个class同时做了三件事
而且mvc都凑在一起做了,holy shit
你希望写这种shit吗?恭喜你,如果你尝试着继承多个接口的话
你离这个程度不远了,当然如果都是同一种类的接口的话,那还好
但是如果不是同一种接口,比如行为和构造的接口凑在一起的话
那……

【在 J*******n 的大作中提到】
: 有一点我是同意你的看法的,继承关系慢慢地在被annotation/injection based API所
: 替代,现在有些开源的技术,因为要应对大量用户各种各样不同的需求,这时候对灵活
: 性的要求非常高,如果还要求用户必须继承抽象类甚至实体类是有一些不必要的限制的
: 。而在大多数不要求应对大量用户需求的Java项目,继承关系还是非常简单直观的一种
: 实现方式,尽量减少层次当然是好的,但从接口到实体类,3-5层的继承不至于会变得
: 多shitty,代码得到了很好的reuse,要改起来也方便
: 我这个abstract class的实例是经过一些简化的,因为我以为你只是要我举个简单的例
: 子然后展示一下怎么转换成annotation based,结果获得了一些关于我API设计的评论
: 。。
: 关于abstract class命名,我这个AbstractComponentPresenter还implement了好几个

z*******3
发帖数: 13709
69
一个j2ee系统
用上各种乱七八糟的框架
就已经足够把一个系统很好滴切成n层了
在我看来,大多数时候你不应该觉得你还需要在同一层之间有特别复杂的关联
如果有的话,会让人怀疑搞构架那个傻逼在干嘛
换句话说,如果一个傻逼阿三写出了一个类有2000-3000行代码的话
上头那个搞构架的,估计也是傻逼一个
而不是什么水平非常高
水平非常高会设计一个让人写两三千行代码一个类的系统
holy shit
这贴的意义就在于很好滴阐释了shit是如何产生的
z****e
发帖数: 54598
70
今天我吃饭时候想了想
为什么我这么长时间不用abstract class了?
而这个概念是如此的简单,当初学java时候就学过了
但是工作中为什么都没用到呢?这个想法倒是很有趣
然后我看了一下你的这个实例,我大概明白为什么了
首先先从你这段开始
你这一段一个类,目测过去,做了不少事情
又是configuration,又是handler,又是constants的
我们先看看大师的代码是怎么写的,看hibernate
hibernate对于configuration有专门的configuration类
然后对于handler,我假设这是一个sessionfactory一样的东西
然后对于你的CRUD,我假设有一个类似session一样的东西
来看hibernate是怎么写的
Sessionfactory sessionfactory = Configuration.buildSessionfactory();
//第一层,从config到factory
Session session = sessionfactory.openSession();
//第二层,从factory到products
session.CRUD methods...
//第三层,用户自己定义的操作
简洁明了,一目了然,对比一下,你觉得你自己写的这一堆东西
合理么?你一个类做了人家三个类做的事
你会不会觉得自己写的这个东西别人看不懂?
至少我觉得我对你这个api的使用会有很大的心理阴影
manager之类的我就assume你没有加进来
回到主题,为什么abstract class是如此不被人使用
我一直没有深入这个话题,因为我一直没怎么认真想过这个
今天中午吃饭时候想了想,觉得应该是这样
其实abstract class完全可以被interface所替换
假设我们有一个abstract class A,有几个concrete class A1,A2,A3 extends A
那么我们可以很轻松地替换成两个interface
interface IA, interface IAn extends IA
然后分别实现
class AImpl implements IA
class AnImpl extends AImpl implements IAn
想到这一步提醒了我
那就是分为两种情况讨论
第一,A是一个实体,也就是entity bean,对应着数据实体
那么我们来看数据库是怎么操作的
A太过于抽象,我们用实例,比如上海人和北京人都是中国人,所以他们都有中国人的
某些行为
比如砸日本车,assume这是正常的,那么如果你把中国人定义为abstract class的话
那么上海人和北京人这两个class就会extends中国人这个抽象类
但是实际上
db设计时候完全不是这么做的
他们是这么做的,他们会把上海人和北京人加多一个内在引用
在db上说就是数据库的外键,而这个外键会指向一个叫做国籍的表
而这个国籍表里面就会包含有中国这个记录
而orm之后,映射到java pojo的时候,就会变成
上海人和北京人这两个class里面,有一个国籍这个实体的一个引用
而不是abstract class,这样可以模块化各个部分,提内聚
而不是继承和耦合,这是一
第二,A是一个session,也就是session bean这种东西
其目的并不是提供entity,而是提供methods
那么我们会考虑把所有方法降解成原子方法
再予以组合,而即便如此,也不会使用abstract class
因为这会增加模块之间的耦合
这就是为什么hibernate要那么操作
而不是象JohnnyQin一样把所有东西写到一起去
其实这也回到了前面说的,还是会采用几个interfaces的组合
而不是一个abstract class的方式,即便我要采用abstract class
我也会怀疑这个abstract关键字是否有必要存在?
那么什么时候会采用abstract class呢?
retry同学说得很精准,你打开framework的时候,你会发现到处都是
而这很容易理解,因为framework没有办法象平常应用一样,去搞db
所以对于entity,它就会采用这种方式
而且注意,这种东西,变化相对小
就比如list,多少年了,1.2版本以后就没有什么改变
而我们平常,管他什么bean,三天两头有变化,那是正常的
所以当他们用这种方式提升模块间耦合的时候,他们不是很在乎
因为list这些常用的东西,很少变,framework也很少变,api也很少变
而我们很在乎,所以一般用户不写这个东西,除非你是搞底层应用开发的
比如写jdbc的,这种事我也无数次说过了,这种鸟事我是不想去做的
就跟写c一样,这是我所厌恶的部分,当然我厌恶归厌恶,社会还是需要这样的人
只是说社会分工不同,我做我喜欢做的,其他的东西,谁喜欢谁去做
所以当我说我不写framework的时候,retry马上就猜到后面了
就不说了,聪明人啊
还有一种情况就是
利用abstract class在interface和class之间建立一个部分实现
其实隐含就有半个final在里面,因为只能extends一个class
基本上一旦这个东西搞下去了,下面的class就差不多快到final class了
就比如interface IA, abstract class AbstractA implements IA
class A extends AbstractA implements IA
这种方式,那么对于用户来说,AbstractA是透明的
因为你会这么用IA a = new A();
这就能解释为什么在api中很难找到abstract class
这就是一对多的一种关联,而且这种关联只是理论上存在
而在现实生活中,你会拆开的
举个例子
中国人砸日本车,韩国人也砸日本车
如果有人吃饱了建立一个abstract class叫做儒家文化圈国家人
然后定义一个砸日本车的method
然后再给中国人和韩国人去分别继承,会有什么后果?
后果会很可怕,因为不能确定中国人和韩国人砸日本车是不是同一种行为
为了中国人和韩国人两个模块高内聚的考虑
我情愿把中国人砸日本车和韩国人砸日本车行为分开实现
哪怕是copy paste我都不愿意把这两个行为写成一个方法
所以abstract class的使用应该仅限于理论上的使用
一旦脱离理论,应用到实际生活中去的时候,应该尽最大可能控制
否则会引发不必要的麻烦
就JohnnyQin说的这个例子,我也无数次强调
减轻依赖,减轻依赖,所以一般情况下,公司内部开发api是不推荐的
当然如果出于商业考虑,想捆绑用户骗钱,那是另外一回事
所以我是没有开发过api的,我情愿把系统包装成最没有效率的web service
我都不愿意去用非常用的api,还是老话减轻依赖
而实际上最常见的所谓的api就是common objects
也就是dto这种东西啦,见多了,不奇怪
历史的遗留,以后要尽量少用,实际上这样做的恶果就是
层次不清晰,往往web server有ejb,ejb的server有jsp
为了能够找到所需要的class
睡觉了,下次再聊

【在 J*******n 的大作中提到】
: 有一点我是同意你的看法的,继承关系慢慢地在被annotation/injection based API所
: 替代,现在有些开源的技术,因为要应对大量用户各种各样不同的需求,这时候对灵活
: 性的要求非常高,如果还要求用户必须继承抽象类甚至实体类是有一些不必要的限制的
: 。而在大多数不要求应对大量用户需求的Java项目,继承关系还是非常简单直观的一种
: 实现方式,尽量减少层次当然是好的,但从接口到实体类,3-5层的继承不至于会变得
: 多shitty,代码得到了很好的reuse,要改起来也方便
: 我这个abstract class的实例是经过一些简化的,因为我以为你只是要我举个简单的例
: 子然后展示一下怎么转换成annotation based,结果获得了一些关于我API设计的评论
: 。。
: 关于abstract class命名,我这个AbstractComponentPresenter还implement了好几个

相关主题
JEE 6 看起来不错interface可不可以有variable?
是不是spring mvc用的很少Java Play Framework 和 Spring 比较一下? (转载)
再论abstract classannotation question
进入Java版参与讨论
S**********C
发帖数: 161
71
我不是跟你说过了java.util.xxx,里面的吗? 举那个例子是因为大家都知道,
你又说"我又不搞framework,balabala,然后又扯上什么session factory"
大哥,我感觉你好像觉得java的工作要么就写spring framework这一类,
要么就是web+Database CRUD这一类,没有其它了?
要么这样吧,我来一个简单的设计题,请教一下如果你不用interface和abstract
class,
怎么实现什么类重用,规范不同implementation之类的基本思想。
现在需要将一个BalanceSheet对象export到一个文件,输出文件格式是csv和excel,
设计的时候要求支持扩展性,比如我将来要支持export IncomeStatement, 或者
Cashflow.
同时需要支持新的格式,pdf,或者excel 2007.
很简单一要求,完全不用在乎BalanceSheet里面是什么,怎么写成pdf这些细节,就是
要个设计思路。不要又扯回什么session bean, stateless what so ever.

【在 z*******3 的大作中提到】
: 要不你展开说说我怎么没看明白
: 搞得你很懂一样,那你给一个例子吧
: abstract class,常用的api中类找一个出来

S****h
发帖数: 558
72
Hehe. Thanks for the reply. I am still mostly in the Effective C++ /GoF
level as you can see in my post and question. You seems to indicate now
things go a bit further. Any good books about these new trend? Thanks.

【在 z*******3 的大作中提到】
: 这是最早想到的,很早以前就想的
: thread
: 这是一个abstract class吗?
: 其实不是啊,这是一个concrete class
: 你说的这几个方法都deprecated了
: 你们说的都是我想过的,我第一个猜测也是猜thread那边应该有一个abstract class
: 但是后来找了找,thread和runnable都不是啊
: 然后你说的其实是override,不是abstract本身
: 是个class就可以override,所以这个例子还是不行
:

z*******3
发帖数: 13709
73
我就问一句,你所谓的例子,你自己用么?
你写的时候会写abstractlist l = new arraylist()么?
然后不是我觉得java工作怎样,这是客观条件所决定的
我毕业之后,spring已经遍布大街小巷了,我一般不去跟潮流作对
有其他的啊,ejb就是其他的,你要跟我聊ejb么?
还有swing也是其他的,你想聊swing么?
如果愿意,web service也是其他的,jpa也是其他的,jms也是其他的
其他的很多,问题在于貌似你不是很感兴趣
设计题我再接一个回帖说

【在 S**********C 的大作中提到】
: 我不是跟你说过了java.util.xxx,里面的吗? 举那个例子是因为大家都知道,
: 你又说"我又不搞framework,balabala,然后又扯上什么session factory"
: 大哥,我感觉你好像觉得java的工作要么就写spring framework这一类,
: 要么就是web+Database CRUD这一类,没有其它了?
: 要么这样吧,我来一个简单的设计题,请教一下如果你不用interface和abstract
: class,
: 怎么实现什么类重用,规范不同implementation之类的基本思想。
: 现在需要将一个BalanceSheet对象export到一个文件,输出文件格式是csv和excel,
: 设计的时候要求支持扩展性,比如我将来要支持export IncomeStatement, 或者
: Cashflow.

z*******3
发帖数: 13709
74
这个例子很好
我会这么做
首先第一步,去找已经有的工具
比如pdf文件,我会找到itext
比如excel文件,我会找到apache poi
比如csv文件,我会找到open csv
这些东西,这几个里面,我用过前两个,最后一个没有用过
但是不妨碍我找到它
然后第二步,考虑如何统一现有的lib
我会先把你的文件格式做一个标准转换
转换成xml格式,这个工具很多,不展开
如果可以使用数据库的话,存到数据库里面去
然后第三步,我发布一个根据xml转换成各种格式的interface
然后用上面的lib所给的方法挨个实现
我不认为有用abstract class的必要
interface+class足够了
事实上也很难找到一个不同文件格式能够共用的方法s
因为类库都不一致
然后其他的什么cashflow之类的,只要转换成xml,剩下的都好办
xml是一个统一格式标准,所以先转成xml再转成其他格式是比较合理的
如果不想这么做,那么放到db中去是一个不错的选择
也就是说,第二步最重要,先把输入给统一成一种格式(推荐xml)
然后再用第三步把xml输出成所需要的格式
优化:
如果采纳我的建议,先转换成xml文件
那么有一个东西叫做xslt,去看看吧,后面想怎么改就怎么改,太轻松了
我都不需要去写代码,每多一个格式,我直接加一个xsl就行
用这种方式我可以用一个统一的方法,来实现不同的输出
而且代码少得可怜
这个思路其实很接近spring最早的方式,就是我说的用reflection+xml来实现目的
就是我们写spring的时候,很多时候改的是xml,而不是一堆的接口
同样的,这里我们对于新增的东东,也是加xsl,而不是硬编码
再优化:
其实只要转换成xml,再转成其他格式,可能都不需要自己去写xsl转换
很多时候,工具本身可以自行读取xml文件,excel就可以
最关键的不是在于神马扩展不扩展,在于标准
这又回到了我一直强调的,标准,标准很多,不仅仅是组件的标准
db也有标准,现在输入和输出也有了标准,关键在于会不会利用这些标准
最大的扩展就是跟标准衔接,什么是标准?xml就是标准
sql就是标准,ejb就是标准,http就是标准,web service就是标准……
不是我每天都在谈高层的东西,是标准太重要了
就这么简单一个东西,用标准跟不用标准,区别太大了
不用标准,又是接口又是抽象类,每增加一个格式,就要吭哧吭哧写半天代码
累啊

现在需要将一个BalanceSheet对象export到一个文件,输出文件格式是csv和excel,
设计的时候要求支持扩展性,比如我将来要支持export IncomeStatement, 或者
Cashflow.
同时需要支持新的格式,pdf,或者excel 2007.

【在 S**********C 的大作中提到】
: 我不是跟你说过了java.util.xxx,里面的吗? 举那个例子是因为大家都知道,
: 你又说"我又不搞framework,balabala,然后又扯上什么session factory"
: 大哥,我感觉你好像觉得java的工作要么就写spring framework这一类,
: 要么就是web+Database CRUD这一类,没有其它了?
: 要么这样吧,我来一个简单的设计题,请教一下如果你不用interface和abstract
: class,
: 怎么实现什么类重用,规范不同implementation之类的基本思想。
: 现在需要将一个BalanceSheet对象export到一个文件,输出文件格式是csv和excel,
: 设计的时候要求支持扩展性,比如我将来要支持export IncomeStatement, 或者
: Cashflow.

z*******3
发帖数: 13709
75
gof的几个模式里面
只要涉及到abstract class的
普遍比较复杂,而且很多人看不懂
比如bridge,所以我怀疑这些模式的可用度有多高
最终很有可能跟早些版本的ejb一样,因为太复杂而被淘汰
其实是这样,我不知道其他人怎么学java
但是我学这个东西,我从来只有一个目的
就是这些东东无非一个工具,所谓工具,如果不能被用来实现某个目的
那么工具就是废物一个,所以当我遇到java的任何的一个东西的时候
我会首先思考,这个玩意到底要做什么,然后再辅以几个实例
就可以很快掌握,然后可以很快上手开发
但是呢,随着时间的发展,工具越来越多
经常会遇到,同一个目的,我们可以用多个工具实现
那么这个时候就应该考虑如何取舍这些工具了
很有趣的是,这也是后来跟领导面试时候对方问的一个问题
当你面对两种或者多种方式,都可以实现同一个目的的时候
你该怎么做?
其实很早以前我就特意开过一个帖子
特意说了interface和reflection还有annotation三种不同方式实现同一目的
可惜当时没有什么人真正看进去
殊途同归,这是没错,但是趋势永远是用最简练的代码来实现目的
还有就是,看源代码这个事情,其实看前面的讨论
应该都有一个共识,就是看别人代码,远不如你自己去写来得容易
所以,如果一个框架,要看懂了才能用,那非常可怕的
所以,一个框架真正的用处应该是不需要你去看他写的源代码,你一样能用才对
所以,其实到现在,我都没怎么认真看过各种api的源代码
不管是java本身的还是framework的
因为现有的代码已经够让我头疼的了
更何况就算看了源代码,也记不住那些类的名字
因为不见得会用那些类,只要不用一段时间后肯定忘记
太多了,所以更应该强调对于原理的掌握
剩下的时间,该干嘛干嘛,没事找mm聊聊天,改改自己的chinglish
拍拍领导的马屁,做什么不比搞这些东西强
当然我们还是应该佩服那些愿意阅读源代码的人,至少他们肯钻研不是?

【在 S****h 的大作中提到】
: Hehe. Thanks for the reply. I am still mostly in the Effective C++ /GoF
: level as you can see in my post and question. You seems to indicate now
: things go a bit further. Any good books about these new trend? Thanks.

S**********C
发帖数: 161
76
不是很明白你的逻辑,你是说如果没有人或者很少人写
AbstractList l = new ArrayList() 就表示AbstractList没有存在的必要?
至于那个设计题,我看到你说要用db,我就晕彩了,我也不知道怎么评论了,
所以就不评论了。

【在 z*******3 的大作中提到】
: 我就问一句,你所谓的例子,你自己用么?
: 你写的时候会写abstractlist l = new arraylist()么?
: 然后不是我觉得java工作怎样,这是客观条件所决定的
: 我毕业之后,spring已经遍布大街小巷了,我一般不去跟潮流作对
: 有其他的啊,ejb就是其他的,你要跟我聊ejb么?
: 还有swing也是其他的,你想聊swing么?
: 如果愿意,web service也是其他的,jpa也是其他的,jms也是其他的
: 其他的很多,问题在于貌似你不是很感兴趣
: 设计题我再接一个回帖说

J*******n
发帖数: 2901
77
我靠,先转成xml再用xslt来做export,you are the man!

【在 z*******3 的大作中提到】
: 这个例子很好
: 我会这么做
: 首先第一步,去找已经有的工具
: 比如pdf文件,我会找到itext
: 比如excel文件,我会找到apache poi
: 比如csv文件,我会找到open csv
: 这些东西,这几个里面,我用过前两个,最后一个没有用过
: 但是不妨碍我找到它
: 然后第二步,考虑如何统一现有的lib
: 我会先把你的文件格式做一个标准转换

g*****g
发帖数: 34805
78
GOF模式本身是不错的。但在实现上,因为有reflection,有Annotation,
Java可以用更简单的方式实现一些模式。Singleton 就是一个典型的例子。

【在 z*******3 的大作中提到】
: gof的几个模式里面
: 只要涉及到abstract class的
: 普遍比较复杂,而且很多人看不懂
: 比如bridge,所以我怀疑这些模式的可用度有多高
: 最终很有可能跟早些版本的ejb一样,因为太复杂而被淘汰
: 其实是这样,我不知道其他人怎么学java
: 但是我学这个东西,我从来只有一个目的
: 就是这些东东无非一个工具,所谓工具,如果不能被用来实现某个目的
: 那么工具就是废物一个,所以当我遇到java的任何的一个东西的时候
: 我会首先思考,这个玩意到底要做什么,然后再辅以几个实例

a******n
发帖数: 5925
79
我记不太清在哪个贴子里说了一个class里推荐的行数了, 是多少比较合适啊?
我现在的android游戏里面最大的一个activity 有460行,
是不是应该refactor一下?
H*****L
发帖数: 5705
80
这个确实脑残确诊。。估计生物出身

【在 J*******n 的大作中提到】
: 我靠,先转成xml再用xslt来做export,you are the man!
相关主题
spring Annotation based configuration有没有对EAI,JCA熟悉的?
现在有些迷惑了封装
Re: Anyone interested in starting our own EJB vender company?说说spring和ejb的差别
进入Java版参与讨论
a******n
发帖数: 5925
81
应该是有abstract class, 里面定义 abstract method
不同的情况extend后不同的实现?

【在 J*******n 的大作中提到】
: 我靠,先转成xml再用xslt来做export,you are the man!
r*****s
发帖数: 985
82
这个自我陶醉的说:所以人说编程是个艺术。
用什么画笔图什么颜料您自己看着办。
Bottom line是能用就行 (我这个要求够低的,呵呵)
你们争来争去的,
就好像张大千犯不着看不起毕加索吧,
呵呵。
我个人abstract class还是经常用到的,
提高code reusability,
一堆类似的实现,
common behaviors,
写着写着就提到abstract class去了,
其实也就是Template method pattern.

【在 a******n 的大作中提到】
: 应该是有abstract class, 里面定义 abstract method
: 不同的情况extend后不同的实现?

g*****g
发帖数: 34805
83
用abstract class没什么问题,不是写共用框架,个人不建议用太深的hierarchy。
很多时候composition over inheritance是一个选择。

【在 r*****s 的大作中提到】
: 这个自我陶醉的说:所以人说编程是个艺术。
: 用什么画笔图什么颜料您自己看着办。
: Bottom line是能用就行 (我这个要求够低的,呵呵)
: 你们争来争去的,
: 就好像张大千犯不着看不起毕加索吧,
: 呵呵。
: 我个人abstract class还是经常用到的,
: 提高code reusability,
: 一堆类似的实现,
: common behaviors,

r*****s
发帖数: 985
84
同意,
看情况吧,
composition是好用的,
inheritance的code好懂一些。
特别是在用spring的时候用composition这里那里inject一下
一不留神就有点乱。
用abstract class也是为了避免Deep hierarchy,
就是为了一个flat的implementation layer,
否则就不要“abstract”了。

【在 g*****g 的大作中提到】
: 用abstract class没什么问题,不是写共用框架,个人不建议用太深的hierarchy。
: 很多时候composition over inheritance是一个选择。

b******y
发帖数: 1684
85
传统java code里面的东西查reference/call hierachary用eclipse很方便,
但是inject的东西怎么查啊,总不能老是用search吧

【在 r*****s 的大作中提到】
: 同意,
: 看情况吧,
: composition是好用的,
: inheritance的code好懂一些。
: 特别是在用spring的时候用composition这里那里inject一下
: 一不留神就有点乱。
: 用abstract class也是为了避免Deep hierarchy,
: 就是为了一个flat的implementation layer,
: 否则就不要“abstract”了。

g*****g
发帖数: 34805
86
The main drive of abstract is to reduce code replication.
Nothing wrong with that, skeleton pattern is a perfect example,
You write a framework, you specify the flow, you leave the implementation to
subclasses. But on a deep hierachy, you'll start seeing not so perfect is-A
scenario. A method in superclass makes sense for one subclass but not
another, that's when you should consider composition.

【在 r*****s 的大作中提到】
: 同意,
: 看情况吧,
: composition是好用的,
: inheritance的code好懂一些。
: 特别是在用spring的时候用composition这里那里inject一下
: 一不留神就有点乱。
: 用abstract class也是为了避免Deep hierarchy,
: 就是为了一个flat的implementation layer,
: 否则就不要“abstract”了。

z*******3
发帖数: 13709
87
这个贴我一直没时间回
最近有点小忙,p事有点多,家事公事一堆
明天台湾那个美工要回来了
所以估计又要忙了,抓紧时间回复一下
again
不是说没有必要存在,我从来没有这个意思
是我觉得现在我用得越来越少,慢慢淡出我的视野
如果不是写core java的东西,我几乎就不用了
因为只要框架往上一搭,什么事情都解决了
不需要我去写abstract class
用不用db完全看你的环境而定
我也没看到你说不能用db,难道你在写desktop的程序吗?
我倒是在写一些desktop的东西,我很怀疑是不是有人跟我一样无聊
除非你告诉我你在跟我一样,打算写一个minecraft出来

【在 S**********C 的大作中提到】
: 不是很明白你的逻辑,你是说如果没有人或者很少人写
: AbstractList l = new ArrayList() 就表示AbstractList没有存在的必要?
: 至于那个设计题,我看到你说要用db,我就晕彩了,我也不知道怎么评论了,
: 所以就不评论了。

z*******3
发帖数: 13709
88
先转成xml作为标准的格式储存
然后用xslt转换成任何你所需要的格式
包括另外一种的xml
这样做的好处是便于扩展,如果有新增格式
不需要硬编码,直接加xsl就可以了
这也是xslt的本意
这又是一个经典的效率和结构的争论
为了简单效率,总会有人抛弃标准化的结构
这是愚蠢的,一旦事情做大,恶果就出来了
如果说到现在还没有意识到我在说什么
我也不知道说什么了
硬编码在我看来从来都是愚蠢而且毫无必要的
大多数时候都是如此

【在 J*******n 的大作中提到】
: 我靠,先转成xml再用xslt来做export,you are the man!
z*******3
发帖数: 13709
89
看你class里面的结构了
有些人觉得500行也可以
但是实际上我控制在200行左右
不包括前面那些import和comments

【在 a******n 的大作中提到】
: 我记不太清在哪个贴子里说了一个class里推荐的行数了, 是多少比较合适啊?
: 我现在的android游戏里面最大的一个activity 有460行,
: 是不是应该refactor一下?

z*******3
发帖数: 13709
90
对,用inject的话查找是个大问题
所以又扯到结构去了
往往很多时候结构割得不清不楚得
怎么做都很痛苦
多来几个接口就痛苦了
尤其是接口对实现类是多对多得关系
那很容易晕菜
所以写代码的人很重要
设计代码的人也很重要
java很多时候不过是把c++工程立面早期出现的问题
给推迟了那么十多年再出现而已
很多项目最后还是死于一团乱麻

【在 b******y 的大作中提到】
: 传统java code里面的东西查reference/call hierachary用eclipse很方便,
: 但是inject的东西怎么查啊,总不能老是用search吧

相关主题
真的还有人用那么heavy的web sphere,jboss么?有做portlet的吗?在client-side用java来做portlet?
哪个牛人来说一下JSF的前景一个server如果想把一些api作为public,一些作为private,一般都有什么办法?
你们知道jee都有什么吗?Struts基本思路请教
进入Java版参与讨论
z*******3
发帖数: 13709
91
这只是最基本的一种方法而已
这是一个本科毕业生的想法
而不是一个有着多年项目经验的人的想法
有项目经验的人应该给出多种解决方案
而不是固守其中一种
前面好虫替我说了
abstract class没有错
这是一个阶段,但是经过了这个阶段
后期可以有更多的方法予以处理
当然对于只懂这一种解决方案的人来说
这就是他们的全部,说什么都没用
因为这个东西毕竟是可行的
就像c用来写大项目理论上也是可行的一样

【在 a******n 的大作中提到】
: 应该是有abstract class, 里面定义 abstract method
: 不同的情况extend后不同的实现?

z*******3
发帖数: 13709
92
给你一个小建议
对于inject来说
最近的趋势,就是抛弃xml做统一配置
用annotation
所以annotation的inject的时候的命名
尽量跟你要inject那个类名保持一致
这是约定俗成,但是可以大大减少你查找的成本
用传统的继承很容易把所有的类的关系编织成一个网状结构
你把类的uml拉出来就知道了
惨不忍睹
理想状态是树状结构,但是往往做不到
所以最后依赖ide的各种查找功能或者是操作系统的各种查找命令去编程
这是错误的,新人会痛苦不堪,因为学习总是先从了解结构开始
看代码那是很后面的事了
而面对一个网状结构,要解释那不是那么容易的

【在 b******y 的大作中提到】
: 传统java code里面的东西查reference/call hierachary用eclipse很方便,
: 但是inject的东西怎么查啊,总不能老是用search吧

z*******3
发帖数: 13709
93
你有没有想过,如果格式互相之间转换,你的搭配会有多少种?
pdf/html/cvs/excel
转换成
pdf/html/cvs/excel
总共有4*3=12种组合
你要写12个方法
pdf->html
pdf->cvs
pdf->excel
html->cvs
html->pdf...
而如果统一转成xml,再统一转换出去,哪怕我不用xsl
就是硬编码,那么就是4+4=8个方法
如果采用xsl,那么就是4+1=5个方法和4个xsl文件
这还只是4种,如果是40种呢?
你不用xml,硬编码,40*39=1600-40=1560个方法
用xml,硬编码,40+40=80个方法
用xml和xslt,40+1=41个方法
如果有1000种格式我们就不说了吧?
所以哪怕是硬编码,你也应该先转换成xml再转换出去
好虫一直在鼓吹nosql,你想想为什么nosql用什么方式组织数据?
一个道理啊

【在 J*******n 的大作中提到】
: 我靠,先转成xml再用xslt来做export,you are the man!
1 (共1页)
进入Java版参与讨论
相关主题
你们知道jee都有什么吗?interface可不可以有variable?
有做portlet的吗?在client-side用java来做portlet?Java Play Framework 和 Spring 比较一下? (转载)
一个server如果想把一些api作为public,一些作为private,一般都有什么办法?annotation question
Struts基本思路请教spring Annotation based configuration
一个土土的问题现在有些迷惑了
JEE 6 看起来不错Re: Anyone interested in starting our own EJB vender company?
是不是spring mvc用的很少有没有对EAI,JCA熟悉的?
再论abstract class封装
相关话题的讨论汇总
话题: abstract话题: class话题: interface话题: 东西话题: 不是