正确设计Java类

时间:2015-09-25 17:23:19

标签: java class oop

我的问题是,我应该counterbore(板中的凹孔)属性为plate,还是counterbore属于joint的属性

我有以下课程用于工程分析程序:

Plate
Bolt
Washer
Nut 
Material
Coating

然后我有代表各种关节的类

TappedJoint (a joint were the bolt is threaded into the bottom plate) will have:
  Plate topPlate
  Plate bottomPlate
  Bolt bolt
  Washer topWasher

BoltedJoint
  Plate topPlate
  Plate bottomPlate
  Bolt bolt
  Nut nut
  Washer topWasher
  Washer bottomWasher

沉头孔仅适用于topPlate,但我需要进行验证,即用户输入的板厚大于沉头孔的深度。我是否只是在bottomPlate中将沉头孔设置为null,或者将沉头孔属性放在关节类中更好?或许我应该使用其他模式,如子类?

涂层和材料我作为属性添加到每个部分,因为添加到关节中会过于冗长,即:

  BoltedJoint
    Plate topPlate
    Plate bottomPlate    
    Coating topPlateTopSurface
    Coating topPlateBottomSurface
    Coating bottomPlateTopSurface ...etc 

我可以让它适用于任何一种情况,但也许它们是更好的设计?

2 个答案:

答案 0 :(得分:0)

我认为如果您将counterbore作为Joint的属性,那么PlateBolt都可以访问特定于每个Joint的属性。这样,Bolt无需访问Plate对象来查找孔。

答案 1 :(得分:0)

如果我正确理解了上下文,counterBoreJoint要求topPlate的内容。在这种情况下,它应该是Joint的属性(可能取自Bolt或其他任何指示),Joint如果不是topPlate则拒绝counterBore有足够的厚度。

如果PlatePlate的物理属性(即Plate实际上有一个钻孔的沉头孔),那么它也应该是Joint的属性。但是topPlate仍然会将其作为foo的要求。

希望它有意义。