作者Killercat (杀人猫™)
看板java
标题[J2SE] 谈谈Service的设计
时间Fri Jul 19 13:44:03 2013
http://rayer.logdown.com/posts/32096-talk-about-service-design
因为文很长,加上里面有无敌多的code
所以我直接贴我logdown连结
绝对不是要推销自己blog喔(本来就没啥人气的 XD)
Logdown能用Markdown真的是太对我胃口了,唯一的缺憾大概就是没footnote
所以前两天就决定慢慢把技术文章转过来
这篇将会在一个月之後的某个技术讨论会议拿出来聊,也请大家帮我看看
这技术上到底有什麽优缺点
可以直接执行的source code在整篇文章最下面
里面包含了自己动手玩。
这篇ptt post我想聊点其他东西,跟这个有点关系,可以算是这个技术的起头
我自己工程师生涯大概也有9年了,我算是比较坚持强型别以及型别安全的。
也许是因为我主攻的是C++,C++对这个的技术(Technique)是相当重视的,
而JavaScript则是另外一种极端,Obj-C早期也是完全没型别安全概念
Java整体来讲开发者的习惯是比较偏中庸,前面有人提到Spring,其实Spring
严格讲起来也有很多型别问题,更不用说很多系统中充斥着父转子子转父
AService serv = (AService)getSystemService(SERVICEA_CONTEXT);
或者这种东西(坏习惯的人真的很多)
if(a instanceof AService)
.......;
由於我个人是比较坚持型别安全,编译器能帮我们检查的时候我绝对不会执行期检查
在我还在写C++的时候,也因为template的使用跟资深前辈迭起冲突
(template可以锁定型别,而且能做出一些如Policy Based Design的设计)
在Java其实也常常会碰到自己写的Generic却发现别人根本看不懂的窘况
(老实讲我自己私底下会认为,都职业级了,这种东西跟Design Pattern至少都要能看
懂吧?纯Technique的东西不能拿看不懂当借口)
我以前也常常去涂改别人obj-c id传来传去的code,如果这个放在java的话,就是把
Object传来传去,然後再转型 -- instanceof? 硬转?whatever... 这种code我想在
看这个板有点年纪的人应该看到都会想骂。
@Override
public Object startService(Object parameter);
这种code其实职业生涯碰过许多次,总会说阿parameter每个service都长得不一样啊
(听说有种做法叫做生成模式?没考虑过用Factory or Builder?)
全面改写很麻烦因为它已经是interface的一部分了啊
(听说这interface就是嫌麻烦的人搞出来的飞机)
反正这种东西该怎麽转型势教育训练该做的事情啊
(这个真的听了很无言都不知道怎麽反驳的好 XD)
後来才慢慢体会到,所有事情都自己做好,别人不用转型的话
整个code都会清爽很多。Framework层先做掉,让对方用的方便,自然就会这样用
这篇blog文章也请大家不吝指教一下,感谢 =P
我相信应该很多人也对这方法跟特性很陌生,顺便分享一下
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.124.251.135
1F:→ swpoker:我还是比较喜欢用factory,虽然硬梆梆又烦死了 07/19 14:47
2F:→ Chikei:Google Guice 07/19 15:33
3F:推 gtu001:受教了 07/21 06:33
4F:推 ooooooo:推~期待後续的文章 07/22 08:39