`
fansfirst2008
  • 浏览: 95557 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java的方法 与 层次

阅读更多

  记得曾多次看到过一句话: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;
    }

 

看看三个方法依次调用,前面两个方法简短的只有两条语句!

仔细品读,就会感到,用现在最流行的话就是三层结构.

使得问题保持在同一层次,有以下几个好处:一:代码结构清晰,同层次的问题是清晰并且容易理解.迅速理解代码是优秀代码的之一

二:同一层次的代码是复用的基础,

1000copy 写道
代码的价值不在本身大小和复杂度,而在于多少其他代码在用它。

三,同一层次的代码是抽象的基础,只把必要的细节暴露给客户是有巨大的好处,看下面两个代码

 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个对象,那简单至极,看了这些代码之后,才知道,工厂真的和现实生活中的工厂一样!

 

分享到:
评论

相关推荐

    Java深入解析透析Java本质的36个话题

    资源名称:Java深入解析 透析Java本质的36个话题内容简介:本书分为5 章,分别为“基本概念”,“运算符与表达式”,“String 类”,“方法、构造器与变量”,“类与接口”。通过以上方面介绍那些常见、常用却少为人...

    java试卷及答案

    11 针对网络通信的不同层次 Java提供的网络功能有四大类:InetAddress URL Socket DatagramSocket "&gt;1 Java程序源代码须先通过 编译器 产生Java虚拟机器的机器码 bytecode 再经过解释器将其转成实际使用的机器和...

    Java 1.6 API 中文 New

    java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt....

    Java重点知识总结

    1、Java三大平台: Java ME 、Java SE (JDK)、Java EE 2、平台无关性 Application、Applet程序结构 ,Java程序编译、运行过程 ,Application命令行参数 包的概念 ,常用包(结合后面的内容,了解一些类所在的包) ...

    java初学者必看

    最近正在学习Java,也买了很多的有关Java方面的书籍,其中发现《跟我学Java》这本书,都的很不错啊,所以顺便拿电脑把这本书的目录敲了下来,与大家分享。尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,...

    Java优化编程(第2版)

    Java优化编程(第2版)通过丰富、完整、富有代表性的实例,展示了如何提升Java应用性能,并且给出了优化前与优化后的Java应用程序的性能差别,以实际的实例与数字告诉你,为什么不可以这么做,应该怎么做,深入分析...

    瑜琅java学习笔记

    1 java起源 2 java语言概述 3 简单(基本)数据类型 4 运算符:java有四大类运算符:算数运算、位运算、关系运算和逻辑运算 5 程序控制语句 6 介绍类:类是java的核心和本质 7 深入方法和类:方法重载、参数传递和递归...

    Java语言的科学与艺术(国外计算机科学经典教材)

    本书采用现代面向对象方法,从零开始介绍最有用的类层次结构,全文使用图形和交互式程序,充分激发学生的学习兴趣。本书使用传记简介、引用以及哲学片段来突出计算的历史和理性背景,着重强调算法和问题解决,而今天...

    疯狂java讲义

    如果读者需要获取关于课后习题的解决方法、编程思路,可以登录站点与笔者及《疯狂Java讲义(附光盘第2版)》庞大的读者群相互交流。 《疯狂Java讲义(附光盘第2版)》为所有打算深入掌握Java编程的读者而编写,适合各种...

    史上最全Java面试题目大集合

    11. 继承:继承是一种联结类的层次模型,12. 并且允许和鼓励类的重用,13. 它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,14. 这个过程称为类继承。新类继承了原始类的特性,15. 新类称为...

    Java2类库(PDF)

    此外,本书还详细介绍了Java软件开发包(JDK)从版本1.1到版本1.2对类及方法所作的改动。 本书是参考手册而不是指导手册,相信无论是对Java程序员还是学习和使用Java技术的广大读者和用户,本书都将是他获取完整、...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    java2 类库.rar

    还详细说明了Java软件开发包(JDK)1.1到从版本1.2对类及方法所作的修改。需要指出的是:本书是补充版本,有些材料需要参阅《The Java Class Libraries, Second Edition, Volume 1》一书的内容。

    Java课件以及代码

    源文件命名时,若文件中含有public类,源文件必须与该类名字一致,注意区分大小写。  正确的语句序列: package Transportation;//怎样写包??? import java.awt.Graphics; import java.applet.Applet;  错误的...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    和行为应为与变量和方法相对应。自行车的状态:数度是 10mp(每小时 10 米),步度是 90rpm (每分钟 90 转),当前传动装置是第 5 个齿轮。再面向对象的程序设计中,这些数据应放在 变量中。自行车的行为:刹车,...

    JAVA基础课程讲义

    容器中的接口层次结构 136 Collection接口 137 LIST接口 137 SET接口 138 Map接口 138 Iterator接口 139 遍历集合 140 Collections工具类 141 Comparable接口 141 equals和hashcode方法 143  泛型 144 思考作业 ...

    java API 1.7beta

    对java方法按包划分,并且列出已经过时的方法等,并且层次结构非常分明

    java深入解析

    目录 目 录 第1章 基本概念 1 话题1 开门见山——测试...目前更多的开发人员(不乏多年开发经验者),也仅仅停留在Java表面的层次,而本书,将更深入一层地去讨论Java的话题,令读者耳目一新,知其然,更知其所以然。

Global site tag (gtag.js) - Google Analytics