2

私はいつも、これらのアプローチのどれが最良のアプローチなのか疑問に思っていました:

1)

パッケージ:cars.blue クラス: CarOne.java,CarTwo.java

パッケージ:cars.red クラス: CarOne.java,CarTwo.java

2)

パッケージ:cars.blue クラス: BlueCarOne.java,BlueCarTwo.java

パッケージ:cars.red クラス: RedCarOne.java,RedCarTwo.java

3)

パッケージ:cars

クラス: BlueCarOne.javaBlueCarTwo.javaRedCarCone.javaRedCarTwo.java

アプローチ 1 : 車のクラスを異なるパッケージに分割します。

アプローチ 2 : 車のクラスはパッケージによって既に区別できるため、少しオーバーロードされているようです。しかし、接頭辞は、クラス名を見るだけの場合に有利であり、それがどこに属しているかを確認するためにもう一度見る必要はありません。

アプローチ 3 : すべての車を 1 つのパッケージにまとめます。

どのアプローチが最適ですか?

4

5 に答える 5

4

アプローチ3を使用します。すべての車が同じパッケージに含まれているためです(すべてのドメインクラスが一緒になっています)。議論の余地のある質問と誰もが自分の興味を持っているかもしれません。AFAIKには、ユースケースベースの判断を除いて、これらの事前定義された規則はありません。

于 2012-09-05T12:45:22.133 に答える
2

何を達成したいかによると思いますが、パッケージをグループ化するためだけのものではないことを覚えておく必要があります。ただし、アクセス修飾子を利用することもできます。

すべての車のクラスが何らかのメソッドにアクセスできる必要がある場合は、それらを 1 つのパッケージに含める必要があるため、ポーション 3 が適しています。

package cars;  
public class BlueCarOne {
  void method() {}
}

package cars;

public class BlueCarTwo {
  void method() {}
}

package cars;

public class RedCarOne {
  void method() {}
}

package cars;

public class RedCarTwo {
  void method() {}
}

この場合、carsパッケージのクラスのみが を呼び出すことができますmethod()

RedCarただし、実装の詳細を隠して別のパッケージにBlueCar入れたい場合は。また、非表示にする必要があるメソッドまたはフィールドを としてマークしますpackage protected

乾杯、ミハル

于 2012-09-05T12:51:23.197 に答える
1

Probably you should create packages encapsulating functional blocks. The distinction of color doesn't really imply any functional difference, thus I would also go with option 3 here.

于 2012-09-05T12:48:49.547 に答える
1

Approach 1 is useful mostly when the two packages are exclusive of each other, i.e. in cases when the cars have a common interface, the reds and blues are compiled into separate JARs, and only one of these two JARs is present at a time. When both packages could be present, this naming is confusing.

Approaches 2 and 3 are nearly equivalent, because the names are sufficiently different from each other. Creating a separate package (approach 2) may or may not be an overkill, depending on the way the two groups of classes are used in your application.

于 2012-09-05T12:49:03.003 に答える
1

Otherwise I would have model/pojo/domain package, an do something like :

package model;

class Car {
    private String carColor; //Blue, Red
    private String carType;  // One, Two

    // getter and setters

}
于 2012-09-05T12:49:05.813 に答える