私はメソッドの入力値を確認したいと私は、このようなコードを書きたいいけない:どのアプローチが入力の検証に適していますか?
void name(String name) {
if(name != null) {
//some action
} else {
//some another action
}
}
は、だから私はDecoratorパターンまたは注釈を使用することができます。
デコレーターの例:
public interface User {
void name(String name);
}
public final class dbUser {
//ctor...
void name(String name) {
//jdbc call for update user name
}
}
public final class CheckedNullUser {
private final CheckedNullUser user;
public CheckedNullUser(User user) {
this.user = user;
}
void name(String name) {
String inputName = "Some default value";
if(name != null) {
inputName = name;
}
return user.name(inputName);
}
}
アノテーション例:
方が良いアプローチpublic interface User {
void name(@NotNull String name);
}
public final class dbUser {
//ctor...
void name(@NotNull String name) {
//jdbc call for update user name
}
}
?より良いアプローチが存在するか?
dbUser.nameメソッドの最初のステートメントとしてObjects.requireNonNull(name)を使用するとどうなりますか? – toongeorges
@RomcoBomco * Decorator *の例は* Decorator *の例ではなく、単純な委譲の例です。 'dbUser'と呼ばれるクラスを表示しますが、あなたのコードでは使用しないでください。あなたの擬似コードは、欠落しているコンポーネントがなければ理にかなっていません。 – CKing
@CKing私のコードは、新しいCheckedNullUser(新しいdbUser(// ctor args))のようになります。name( "CKing"); CheckedNullUserクラスはdbUserクラスをデコレートします。 – RomcoBomco