]>
<< XFree86をインストールするmemo | main | 集合族 >>
The Java Programming Language, Fourth Editionをちびちび読んでいる。さっきChapter6 Enumeration Typesを読み終えた。enumの各要素にはメソッドが定義できるので、Stateパターンぽいことができる。
public enum Time {
MORNING {
public void greet() {
System.out.println("おはよう");
}
public Time next() {
return DAYTIME;
}
},
DAYTIME {
public void greet() {
System.out.println("こんにちは");
}
public Time next() {
return NIGHT;
}
},
NIGHT {
public void greet() {
System.out.println("こんばんは");
}
public Time next() {
return MORNING;
}
};
public abstract void greet();
public abstract Time next();
}
public class Test {
public static void main(String[] args) {
Time t = Time.MORNING;
t.greet();
t = t.next();
t.greet();
t = t.next();
t.greet();
t = t.next();
t.greet();
}
}
コンストラクタも使うとこんな感じになる。greet()は各enum要素内でオーバーライドすることもできるようだ。
public enum Time {
MORNING("おはよう") {
public Time next(){
return DAYTIME;
}
},
DAYTIME("こんにちは") {
public Time next(){
return NIGHT;
}
},
NIGHT("こんばんは") {
public Time next(){
return MORNING;
}
};
String message;
private Time(String message) {
this.message = message;
}
public void greet() {
System.out.println(message);
}
public abstract Time next();
}
学校の課題プログラムくらいならこれで十分だろう。Stateパターンを使えってところでこっちを使った場合、どういうことになるかは知らないが。
そういえば先日元バイト先の人と飲む機会があったのだが、情報系の専門学校の子が「javaをフローチャートで習ってる」と言っていた。僕はまず自分の耳とそして彼女の言葉を疑い、それってシーケンス図のことじゃないの、と何度も確認したがどうやら本当にフローチャートらしい。フローチャートって情報処理試験以外でも使われてるんだ、と少し感動した。
http://www.panopticon.jp/mt/mt-tb.cgi/38
コメントする