我学java一年多了,但是总感觉有些方面欠缺着。总结一下就是一下几点:
1.不知道该把一个方法放到哪个类中。比如:用木头做把椅子。
2.不知道该弄成属性还是一个类。细化类中的属性时,我不知道该把它当基本类型看还是当类看。
3.不知道怎样组织成类层次结构来。我感觉自己写最多几个不同的功能类,然后实现需求,但是实在看不出该怎样设计哪些类层次。
4.还有接口的作用我知道,但写代码时不知道该在哪儿用。呵呵,有点罗嗦,各位说说我这是短着哪方面能力?应该看什么书籍?
我现在正在看<深入浅出设计模式>,但是该书好像没有说1,2问题,3,4问题倒是有些感觉了。唉,不知道哪方面欠缺了啊

解决方案 »

  1.   

    面向对象的程序设计,说起来高深,其实,归根结底,是要编程经验的。楼主心里没谱,是因为没有经验。
    如果楼主有近10W行的代码量,那么,思路会在这个过程中逐渐清晰的。当然,还有其他方式,可以解决这个问题,但是,效果(和体验上)可能未必好。
    实践出真知嘛。最后,抛砖引玉一下,希望大家相互交流。怎样确定(制定)一个类?
    简单一点,把我们设计的类,分成两个种类。
    一个种类,用于保存数据;另一个种类,用于处理数据。
    这样,编程思路就清晰多了。
    之后,在根据功能的不同,逐步细化。
    保存数据的类,可以把多个类中共同的属性,提取出来抽象成父类。
    处理数据的类,可以把多个类中共同的方法,提取出来抽象成父类(抽象类)。之后,谈谈接口的设计,简单来说,你只要有两把刷子就可以了。
    第一把,实现多态。
      也就是说,你的程序,允许某些个操作,采用不同实现方案来做。
      比如,记录日志,可以输出到控制台,也可以输出到文本文件中。
      这种情况,你写个接口,定义log方法,
      之后,写一个输出控制台的实现类,再写一个输出文本的实现类,
      在程序的使用过程中,无论你创建的是哪个实现类,调用所属接口的方法即可输出日志。
    第二把,定义操作规范(规则)。
      也即是说,完成某件事情,其他人只能按照你接口定义的方法来做。
      比如,你写了一个记录日志功能的模块,那么,你提供给其他程序的资源,
      一共可分成3类,1.保存数据的类(日志模块不需要);2.日志功能的接口;3.创建接口实现类的工厂类。
      其他事情,不需要其他人来操心。通过工厂类来创建接口的实现类,用户不用关系具体实现类,
      只是面向接口来编程,如果,你的接口定义的方法,只有log(String message);一个方法,那么,
      用户只能每次记录一个文本信息,如果程序出现异常,要记录异常信息,就比较纠结了。
      你接口不具有这个功能,用户就必须按你的接口来玩,要么,就让用户自己再写一个日志功能的模块。
      这就叫做“制定操作规范”,就是我做的东西,你就要按我的方式来玩。
      当然,变通的方法,可以将异常信息,转换成一条文本信息,通过上述接口,写入到日志当中。最后,注意,一般情况下,接口的制定,不用于保存数据的类,几乎都用于处理数据的类。