Address
アプリケーションでPhoneNumber
、、、などのカスタムデータ型用のカスタムBeanクラスをいくつか作成しましたSpecialCode
。
これらのカスタムの非プリミティブデータ型には、私が適用したい独自の制限があります。たとえば、次のように考えてPhoneNumber
ください。
public class PhoneNumber {
private String stdCode;
private String number;
public PhoneNumber() {
}
public PhoneNumber(String stdCode, String number) {
this.stdCode = stdCode;
this.number = number;
}
/* getters and setters */
}
さて、私を混乱させるのは、の制限ですPhoneNumber
。つまり、stdCode
mustは、で始まる0
か、number
mustは7
または8
桁の長さである必要があります。では、これらのルールはどこに適用されますか?
コンストラクターで?として:
//Custom costructor
public PhoneNumber(String stdCode, String number) {
if (!stdCode.matches("[0-9]+") || !number.matches("[0-9]+")){
throw new IllegalArgumentException("Error in Parsing. The STD Code and Number MUST be numeric digits.");
}
if (!"0".equals(stdCode.substring(1, 2))){
throw new IllegalArgumentException("The STD Code must begins with 0");
}
if (stdCode.length() < 3 || stdCode.length() > 5){
throw new IllegalArgumentException("The STD Code must be 3 to 5 digits long. Current Number of digits: " + stdCode.length() + ". ");
}
this.stdCode = stdCode;
this.number = number;
}
または、カスタム例外もありますか?そして、これらのカスタム例外をBeanクラスとどこでマージする必要がありますか?
私は経験豊富なプログラマーではないので、ここでどのデザインパターンを適用すべきか知りたいですか?