ファクトリメソッドで作成する正しいオブジェクトを使用するenum
かString
ディスパッチする方が良いですか?static
例String
:
public static Car createCar(String carName){
if(carName.equals("Ferrari")){
return new Ferrari();
}
else if(carName.equals("Porsche")){
return new Porsche();
}
....
}
例enum
:
public static Car createCar(CarEnum carEnum){
if(CarEnum.FERRARI.equals(carEnum)){
return new Ferrari();
}
else if(CarEnum.PORSCHE.equals(carEnum)){
return new Porsche();
}
....
}
今のところ、私によると:
使用する利点enum
:
- ユーザーが未処理のファクトリを呼び出すことは避けてください
carName
。
使用の欠点Enum
:
enum
への変更(たとえば、 にFERRARI
なる) にはクライアントでの変更が必要になるため、依存関係を増やします。ENZO_FERRARI
ただし、クライアント コードを再コンパイルせずにインスタンスにString
リダイレクトできます。もちろん、リダイレクト先の古い値を使用してクライアントに対して同じことを行うこともできますが、私にとっては、クライアントと互換性を持たせるために古い値を保持する必要があることを意味します...私には意味がありません.Ferrari
Enzo Ferrari
enum
FERRARI
ENZO-FERRARI
enum
enum
この件についてあなたの意見はどうですか?