【空接口的使用】
在接口使用的时候,空接口有2种情况:
1.类似Cloneable,Serializable,他们往往是做一个标记,表示需要某个功能.当然你也可以这么用,来表示你的类具有某个功能,实现了你的某个接口.
2.你的接口继承了别的接口(非空),你的接口本身没有声明函数.这种情况一般是你不希望用户使用父接口来作为参数类型,因为他们的用途可能不同,此时就可以用空接口来实现.
第一种情况我们不再多说,搜索一下关于Cloneable,Serializable的文章就会了解很多.
我们来看下面的代码:
public interface Text
{
String getText();
}
public interface SqlText extends Text
{
}
可以看到,Text接口是用于返回一个字符串.而SqlText是一个空接口,它继承了Text接口.也就是说SqlText也是一种Text.但是我们可以知道,任何一个字符串不一定是Sql字符串,所以此时声明了一个SqlText接口来用于表名当前的字符串是一个Sql字符串.你的函数可以这样声明:
public void doQuery(SqlText aSqlText)
而不是这样
public void doQuery(Text aText)
避免用户产生歧义的想法,一眼看去,就明白应该传入一个Sql字符串.
【继承层次过多】
一般来说,继承的层次不要过多,否则使用者可能会讨厌,找一个函数会很麻烦.很多Java语言检查工具都建议你的继承层次不要超过3层.
【Has A ,Is A,不要滥用继承】
"我是一个Mp3","我有一个Mp3",其实很容易分辨.但是在实际应用中,往往存在把"我有一个Mp3"的情况当作"我是一个Mp3",或者是为了偷懒方便而放松了对自己的要求,甚至还沾沾自喜,感觉找到一个捷径.(scud以前也干过这种事情).
以前我曾经这样干过:我的逻辑类直接继承了我的数据库访问类,这样我可以直接在逻辑类里面访问:
public MyLogic extends MyDBA
aLogic.getInt("click");
aLogic.getString("name");
看起来是非常方便,但是你的逻辑类就牢牢绑在了DBA上,是一种非常不好的做法.现在我这样声明:
public MyLogic
MyDBA adba;
adba.getInt("click");
adba.getString("name");
设计迷踪:给JAVA设计开发新手的一些建议和意见(三)
时间: 2024-09-23 17:10:50
设计迷踪:给JAVA设计开发新手的一些建议和意见(三)的相关文章
设计迷踪:给JAVA设计开发新手的一些建议和意见(四)
[MVC,MVC2,WEB设计编程的分层] 请阅读文章 http://forum.javaeye.com/viewtopic.php?t=11712&postdays=0&postorder=asc&start=0[可扩展不等于功能强大,不要夸大其辞] 现在的系统,因为接口或者其他方法的使用,都具有很大的扩展性.但是扩展性不等于功能强大. 存在一个接口,用户可以实现自己的接口,确实非常方便.但是如果你的系统本身只实现了一个接口或者根本没有实现,那么对用户来说就谈不上方便. 例如W
设计迷踪:给JAVA设计开发新手的一些建议和意见(一)
[概述]------- 在工作中,作为一个程序员或者一个设计师,总是要设计一些函数库或者一个框架,当然最经常的还是做项目,即使是一个项目,也会被经常改动,甚至交给别人改动.当你做这些工作的时候,你的这些成果都是要给别人了解使用的,或者说给以后的你使用的,为了别人的方便或者为了自己的方便,我们要尽可能做好设计.[放正心态,任何东西都是不断发展的]---------------------------------- 技术是日新月异的,每一天都有新的技术出来,正所谓"山外有山,人外有人"
设计迷踪:给JAVA设计开发新手的一些建议和意见(二)
[处理好你的异常]----------------- 异常处理是Java编程中非常重要的一个部分.建议在使用异常之前阅读<Effective Java Programming Language Guide>或者<Practical Java>. 下面从书中摘出几条建议: *绝对不要忽略异常 *千万不要隐藏异常*** *仅在不正常的情况下使用异常 *对可恢复的情况使用可检查异常,对程序错误使用运行时异常(RunTimeException) *给方法引发的异常做文档 *在
java web-Java Web开发新手请教个问题(eclipse第三方jar的正确导入方式)
问题描述 Java Web开发新手请教个问题(eclipse第三方jar的正确导入方式) 比如我导入第三方jar包, 我在JSP页面用了这个包,eclipse编译倒是通过.但浏览器弹出来就显示XXX cannot be resolved to a type. 我是这样导入的:右击项目,Build Path-->Libraries-->Add External JARS,还有我把该jar包也放在项目中的WEB-INF的Lib文件下了,还是没用. 凡是用到第三方包,eclipse编译都通过,浏览器
约瑟夫java设计大作业
问题描述 约瑟夫java设计大作业 这是17世纪的法国数学家加斯帕在<数目的游戏问题>中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人 就将他扔入大海,如此循环进行到仅余15个人为止.问怎样排 法,才能 的使每次投入大海的都是非教徒 的设计思想,java设计大作业 解决方案 //a代表教徒,b代表非教徒 public class Test { /** * Enter
用Java设计COM服务器
本节将介绍ActiveX控件.Automation服务器或者其他任何符合COM规范的服务器的开发过程.下面这个例子实现了一个简单的Automation服务器,它能执行整数加法.我们用setAddend()方法设置addend的值.每次调用sum()方法的时候,addend就会添加到当前result里.我们用getResult()获得result值,并用clear()重新设置值.用于实现这一行为的Java类是非常简单的: public class Adder { private int add
代码-java设计一个管理系统
问题描述 java设计一个管理系统 基于java设计一个学生成绩管理系统,要求有界面,且有增加,查询,修改,删除,退出功能,代码怎么写? 解决方案 这个在网上搜索一下就可以吧. 解决方案二: 界面的代码用easyUI可以自动生成,数据用SQL 解决方案三: 找个jservlet的资料看看你就知道怎么弄了
Java设计一个教学管理系统,要求如下
问题描述 Java设计一个教学管理系统,要求如下 设计一个教学管理系统,考虑到教师.学生.班级.课程.成绩等变量;设计实现类和类的关系,如下: 1.教师和学生都能登入系统,有不同的功能,登录密码为空(提示用继承和多态实现) 2.教师可以录入指定班级指定课程的学生成绩,以字符串输入 3.学生可以登录进去查询某门课程的成绩(自己的或全班的都可以查)和自己的排名 注意:每一个类中要使用无参的构造方法;并且实现数据域的封装 解决方案 教学管理信息系统的设计 解决方案二: http://down.51ct
java 音乐播放器-java设计音乐播放器,如何实现暂停后继续播放?
问题描述 java设计音乐播放器,如何实现暂停后继续播放? 做课程设计,想采用JAVA语言做个音乐播放器 音乐停止后再点播放按钮时总是从开始的位置播放的 求大神们支招如何实现从暂停位置继续播放? 实现过程中应用了第三方JAR包,javazoom.jlgui.*:这个也没多少文档,也不知道里面有实现的方法没 还有如何实现对音量的调控? 解决方案 http://bbs.csdn.net/topics/390328293