0
私はSpring Rest Serviceチュートリアル(https://spring.io/guides/gs/rest-service/)を試しており、RESTサービス呼び出しで指定された名前を逆にするために自分で修正しました。私は、ReverseStringメソッドを書く方法がより良いOOPデザインであることを特定するのに苦労しています。私のNameクラスとそれに対応するReverseStringメソッドの2つのバリエーションがあります。追加明確にするためにクラス内のメソッドのためのより良いOOPデザイン
public class Name {
private String name;
public Name(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
// Is this good OOP design?
public static Name ReverseName(Name myName){
myName.setName(new StringBuilder(myName.getName()).reverse().toString());
return myName;
}
}
-------- OR -------------
public class Name {
private String name;
public Name(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public void ReverseName(){
this.setName(new StringBuilder(this.getName()).reverse().toString());
}
}
ここに私の春のコントローラクラスである:
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Controller {
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value ="name", defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(),
String.format(template, name));
}
@RequestMapping("/name")
public Name name(@RequestParam(value="reverse") String name){
Name myName = new Name(name);
myName.ReverseName();
return myName;
}
/**
// Other Option
@RequestMapping("/name")
public Name name(@RequestParam(value="reverse") String name){
return Name.ReverseName(new Name(name));
}
}
/**
}
キーワード「this」を使用しているため、2番目のアプローチは私の意見では読みやすいです。 – akinfermo
SOの意見を求めるのはいつも危険ですが、変更する必要のあるインスタンスの変更を呼び出し、パラメータとして渡さないため、オプション2がより好きです。 Stringを受け取り、それを元に戻す静的な 'reverse'メソッドの作成について考えましたか?次に、 'Name'だけでなく、文字列を逆にするためのメソッドを作成しました。このメソッドは、Nameの実装として使用できます。 – Kwebble