记得曾多次看到过一句话:java的每个方法应尽量的简短,甚至最好不要超过十行!
一直没用理解它的妙处!今天看源代码才终于领悟到了一点点!本来计划是想看看工厂模式的实现,但是种瓜得豆,下面是JDK的AudioSystem的源代码getMixerInfo()方法部分:
public static Mixer.Info[] getMixerInfo() { List infos = getMixerInfoList(); Mixer.Info[] allInfos = (Mixer.Info[]) infos.toArray(new Mixer.Info[infos.size()]); return allInfos; }
*/ private static List getMixerInfoList() { List providers = getMixerProviders(); return getMixerInfoList(providers); }
private static List getMixerInfoList(List providers) { List infos = new ArrayList(); Mixer.Info[] someInfos; // per-mixer Mixer.Info[] allInfos; // for all mixers for(int i = 0; i < providers.size(); i++ ) { someInfos = (Mixer.Info[]) ((MixerProvider)providers.get(i)).getMixerInfo(); for (int j = 0; j < someInfos.length; j++) { infos.add(someInfos[j]); } } return infos; }
看看三个方法依次调用,前面两个方法简短的只有两条语句!
仔细品读,就会感到,用现在最流行的话就是三层结构.
使得问题保持在同一层次,有以下几个好处:一:代码结构清晰,同层次的问题是清晰并且容易理解.迅速理解代码是优秀代码的之一
二:同一层次的代码是复用的基础,
三,同一层次的代码是抽象的基础,只把必要的细节暴露给客户是有巨大的好处,看下面两个代码
private static List getMixerProviders() { return getProviders(MixerProvider.class); }
private static List getProviders(Class providerClass) { return JDK13Services.getProviders(providerClass); }
每个方法只有一行,但是它存在的好处是巨大的! 这个我觉得参考http://1000copy.iteye.com/blog/675465一系列文章,体会最好了
废话一下:本来是想看下如何实现工厂模式的,一直未体会到工厂模式的好处,以为new个对象,那简单至极,看了这些代码之后,才知道,工厂真的和现实生活中的工厂一样!