`

编写工具类的总结

 
阅读更多

工具类的实现目标是:具有很强的通用性;能有较多的重载方法;尽量传递较少的参数;耦合度最好为零。随时,随地,方便的使用。

随时使用---因为用的比较多,可以考虑用static关键字修饰方法,使得方法在整个生命周期过程中一直处于加载状态,使用时不用重新加载。

随地使用---工具类的一个重要目标是给所有想用的,可能用到的人使用,所以一般的接口方法都设置成为public

方便使用---方法的重载要做足,方法的参数不能太复杂,功能细致,这样的方法就更灵活,应用范围就更广。

 

可以为自己写一个工具类的包(可以打包成jar包),到哪里都可以用。

 

让我们看一下好的工具类具体是个什么样子?

java.lang.System是个很好的例子。

System类定义为final

public final class System

 

声明了一个私有的不带参数的构造方法,这样使得使用者不可以将System类进行实例化。

/** Don't let anyone instantiate this class */

    private System() {

    }

 

System类里只有public private两种类型。PublicSystem对外提供的方法,private方法使其内部的实现更加结构合理。

除了上述的那个保护性的构造方法外,所有的方法,成员变量都是static的(private的方法也只有设置为static时,才能为publicstatic方法提供服务)。

 

public final static InputStream in = nullInputStream();

public final static PrintStream out = nullPrintStream();

public final static PrintStream err = nullPrintStream();

public static void setIn(InputStream in) {}

public static void setOut(PrintStream out) {}

public static void setErr(PrintStream err) {}

public static Channel inheritedChannel() throws IOException {}

public static

    void setSecurityManager(final SecurityManager s) {}

public static SecurityManager getSecurityManager() {}

public static native long currentTimeMillis();

public static native long nanoTime();

public static native void arraycopy(Object src,  int  srcPos,

                                        Object dest, int destPos,

                                        int length);

public static Properties getProperties() {}

public static void setProperties(Properties props) {}

public static String getProperty(String key) {}

public static String getProperty(String key, String def) {}

public static String setProperty(String key, String value) {}

public static String clearProperty(String key) {}

public static String getenv(String name) {}

public static java.util.Map<String,String> getenv() {}

public static void exit(int status){}

public static void runFinalization() {}

public static void runFinalizersOnExit(boolean value) {}

public static void load(String filename) {}

public static void loadLibrary(String libname) {}

public static native String mapLibraryName(String libname);

 

 

public(除了private外)成员变量前添加final,使得效率更高。

 

其它一些注意事项:

不要将工具类写的过大。一般的应用只会用到工具类的部分方法,全部写在一起就会让过多的没有用到的方法也加载到内存,占用资源。所以在工具类中最好以功能分类,放在一个package下。打包成jar文件,提高适用性。当然也可以开源代码,发布在网上。

0
0
分享到:
评论
1 楼 halk 2009-09-13  
工具类的实现目标是:具有很强的通用性;能有较多的重载方法;尽量传递较少的参数;耦合度最好为0
这点很赞~

代码颜色太晃眼了,建议颜色浅一点..

相关推荐

    安卓开发框架工具类相关-个人总结的常用到的工具类可直接导入查看eclipse工具编写.rar

    个人总结的常用到的工具类可直接导入查看eclipse工具编写.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    日志工具 一个个人编写的日志工具

    *本人初衷是希望做一个总结技术的工具, *由于本人能力有限做出的东西bug多多, *现在的版本是5.0。 *由于没有把环境打包成exe文件, *所有需要jdk 1.5或jdk1.5以上的环境方能运行。 *请选择你要存储日志盘符...

    超详细Java入门到精通自学视频课程-总结:static、工具类、单例、继承.rar

    使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用...

    软件工程的实验报告.doc

    表1-2 软件工程工具分类 "工具类型 "代表性的工具名称 "特点 "使用软件工程阶段 " "文档编写工具 "Microsoft "直观的操作界"软件开发权过程 " " "Word、Microsoft "面、模板与向" " " "Visio "导功能、丰富" " " " ...

    java知识点总结

    路径:在JSP、SERVLET、普通CLASS文件中如何得到项目物理...小数格式化:一个工具类,想保留一位小数就几位 日期工具栏:日期的一些操作---日期间隔、日期相加相减、第几周、知道周求日期等等 。。。。。以后还会更新

    python类装饰器装饰方法通用编码模型分析.pdf

    python装饰器是一个用于封装函数、...本文首先探讨了实现装饰方法的类装饰器应具有的基本结构,接着对通用的两种编码模型进行了语法和流程的深入分析,并总结了各自的特点,为编写类装饰器装饰方法提供扎实的理论基础。

    java教学资料

    高校java初级入门教学资源。熟悉并设置JDK path 路径 熟悉eclipse开发环境。 要求同学们在开发环境中,创建一个以姓名和学号命名的工程名称,如zhangsan04010325; 在工程下的src目录下创建...编写一个applet小应用程序

    15天精通Python-Python总结-Python基础-pyhthon小代码.docx

    是解释性语言,执行源代码,提供丰富的库,支持多线,多进程,网络编程,可以支持C/C++的代码,可以测试C/C++和Python开发的单元产品,Python越来越多的成为开源测试自动化工具的首选语言 安装 安装:python2.7.6/...

    网络安全总结.docx

    编写软件时:内存分配 网络安全总结全文共21页,当前为第4页。 输入时:编译工具 最小特权原则 认证失效 是许多攻击的根源、密码锁的作用 源地址有效性验证:重发请求 协议缺陷 现有Internet的限制——TCP三次握手 ...

    基于SSH实现的投票管理系统+源代码+文档说明(高分课程设计)

    编写sql工具类 遇到的问题: java反射和代理的运用不够熟练 自定义注解只会简单使用 学习: java代理实现get,set方法动态获取值 编写前端vue页面总体框架,编写后台代码交互 代码编写遇到的问题 问题: Vue...

    ant 学习与总结

    这意味着你可以轻易的通过使用或者编写程序来扩展这些工具,以满 足不同的平台。当然,这也意味着你将局限于特定的平台,至少可以说局限于特定类型的平台,例如:Unix平台。 同时,Make文件也有一些先天的缺陷。...

    个人文件加密工具-1.0

    缘起:最近对于淘宝之类的网站密码设置的复杂了些,后来想想很多网站的如银行类以及QQ密保之类的一些信息需要保存,但保存到网上感觉不安全,直接写入文本又不安全,因此产生了编写直接文本文件加密工具的想法。...

    java笔记:01.IDEA常用配置总结.md

    java笔记:01.IDEA常用配置总结.md Java是一种高级的面向对象的程序设计语言,它具有广泛的应用和强大的跨平台特性。Java语言于1995年由Sun公司推出,由Java之父詹姆斯高斯林设计。Java的设计目标是提供一种易学易用...

    JDBC连接数据库经验总结

    Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发...

    学生信息管理源码

    经过一个周末的纯手工打造,终于完成。...util:是工具层,utility是存放工具类相关的JAVA代码的,比如采用filter过滤器,还有一些其他的相关小工具杂类亦存放于此。例如字符串处理、日期处理等工具类。

    java 编程入门思考

    A.3.4 编写回调函数 A.3.5 其他J/Direct特性 A.4 本原接口(RNI) A.4.1 RNI总结 A.5 Java/COM集成 A.5.1 COM基础 A.5.2 MS Java/COM集成 A.5.3 用Java设计COM服务器 A.5.4 用Java设计COM客户 A.5.5 ActiveX/Beans...

    专业OA办公系统源码 开发工具:Visual Studio .NET 2005 + Server2005

    开发工具:Visual Studio .NET 2005 + Server2005 项目描述:OA办公系统基于B/S架构设计。 包括文件管理、共享下载、消息管理、公文流传、通知管理、内部论坛、人力资源管理、资产管理 等。 文件管理:接收文件 传送...

    JAVA项目开发全程实录(含电子书和所有源代码)

    2.5.2 系统工具类 74 2.6 系统托盘模块设计 79 2.6.1 系统托盘模块概述 79 2.6.2 系统托盘模块技术分析 79 2.6.3 系统托盘模块实现过程 80 2.7 系统工具模块设计 82 2.7.1 系统工具模块概述 82 2.7.2 系统工具模块...

    java学习:10.Git总结.md

    它被广泛用于开发Web应用程序、企业级应用程序、移动应用程序、嵌入式系统和消费类电子产品等。Java提供了丰富的类库和工具,使开发人员能够快速构建各种类型的应用程序。 Java语言具有面向对象的特性,包括封装、...

    GDI+图像程序设计(PDF & 源码 -电子工业出版社)

    本书通过一些例子来说明如何开发真实世界的工具,如GDI+Painter、GDI+Editro、ImageViewer和ImageAnimator等。另外,作者还给出了大量使用C#语言编写的可重用示例代码,读者可从网上下载完整的C#和Visual Basic.NET...

Global site tag (gtag.js) - Google Analytics