日期:2014-05-20  浏览次数:20699 次

问一下我哪方面能力欠缺,谢谢了
我学java一年多了,但是总感觉有些方面欠缺着。总结一下就是一下几点:
1.不知道该把一个方法放到哪个类中。比如:用木头做把椅子。
2.不知道该弄成属性还是一个类。细化类中的属性时,我不知道该把它当基本类型看还是当类看。
3.不知道怎样组织成类层次结构来。我感觉自己写最多几个不同的功能类,然后实现需求,但是实在看不出该怎样设计哪些类层次。
4.还有接口的作用我知道,但写代码时不知道该在哪儿用。

呵呵,有点罗嗦,各位说说我这是短着哪方面能力?应该看什么书籍?
我现在正在看<深入浅出设计模式>,但是该书好像没有说1,2问题,3,4问题倒是有些感觉了。唉,不知道哪方面欠缺了啊。。。

------解决方案--------------------
1.定义的类应该有意义的,和它相关的操作方法就可以放到它下面,方便使用和查找
2.属性多了就弄个类
3.没理解了
4.接口需要实体类来实现
------解决方案--------------------
探讨
1.定义的类应该有意义的,和它相关的操作方法就可以放到它下面,方便使用和查找
2.属性多了就弄个类
3.没理解了
4.接口需要实体类来实现

------解决方案--------------------
面向对象的程序设计,说起来高深,其实,归根结底,是要编程经验的。

楼主心里没谱,是因为没有经验。
如果楼主有近10W行的代码量,那么,思路会在这个过程中逐渐清晰的。

当然,还有其他方式,可以解决这个问题,但是,效果(和体验上)可能未必好。
实践出真知嘛。

最后,抛砖引玉一下,希望大家相互交流。

怎样确定(制定)一个类?
简单一点,把我们设计的类,分成两个种类。
一个种类,用于保存数据;另一个种类,用于处理数据。
这样,编程思路就清晰多了。
之后,在根据功能的不同,逐步细化。
保存数据的类,可以把多个类中共同的属性,提取出来抽象成父类。
处理数据的类,可以把多个类中共同的方法,提取出来抽象成父类(抽象类)。

之后,谈谈接口的设计,简单来说,你只要有两把刷子就可以了。
第一把,实现多态。
也就是说,你的程序,允许某些个操作,采用不同实现方案来做。
比如,记录日志,可以输出到控制台,也可以输出到文本文件中。
这种情况,你写个接口,定义log方法,
之后,写一个输出控制台的实现类,再写一个输出文本的实现类,
在程序的使用过程中,无论你创建的是哪个实现类,调用所属接口的方法即可输出日志。
第二把,定义操作规范(规则)。
也即是说,完成某件事情,其他人只能按照你接口定义的方法来做。
比如,你写了一个记录日志功能的模块,那么,你提供给其他程序的资源,
一共可分成3类,1.保存数据的类(日志模块不需要);2.日志功能的接口;3.创建接口实现类的工厂类。
其他事情,不需要其他人来操心。通过工厂类来创建接口的实现类,用户不用关系具体实现类,
只是面向接口来编程,如果,你的接口定义的方法,只有log(String message);一个方法,那么,
用户只能每次记录一个文本信息,如果程序出现异常,要记录异常信息,就比较纠结了。
你接口不具有这个功能,用户就必须按你的接口来玩,要么,就让用户自己再写一个日志功能的模块。
这就叫做“制定操作规范”,就是我做的东西,你就要按我的方式来玩。
当然,变通的方法,可以将异常信息,转换成一条文本信息,通过上述接口,写入到日志当中。

最后,注意,一般情况下,接口的制定,不用于保存数据的类,几乎都用于处理数据的类。
------解决方案--------------------
多看源码
------解决方案--------------------
学习一下面向对象的思路,
然后自己多做几个项目,
多看别人写的代码,加以分析,看看自己是否可以用另一种方式达到目的。
其它的到是没什么,祝你成功。