223
|
1 package rep.optimizers;
|
|
2
|
|
3 import java.util.List;
|
|
4 import rep.REPCommand;
|
|
5
|
331
|
6 public interface REPCommandOptimizer {
|
223
|
7
|
249
|
8 // なんで、Interfaceじゃないの?
|
|
9 // Interface じゃないせいで、NullOptimizer でも余計なコピーが生じている。
|
|
10 // 本来、最適化はコピーしながら作業するので、余計にコピーするのは良くない。
|
|
11 // まぁ、この方が安全臭いことはあるかも知れないけど。kono
|
|
12
|
223
|
13 // リストとその中身のREPCommandをコピーするため. finalでよい?
|
249
|
14
|
|
15 // final だとoverride できないので、このコピーを外すことは誰にも出来なくなって
|
|
16 // しまう。kono
|
331
|
17 // public final List<REPCommand> optimize(List<REPCommand> cmdlist){
|
|
18 // List<REPCommand> copied = new LinkedList<REPCommand>();
|
|
19 // for (REPCommand cmd: cmdlist){
|
|
20 // // ちゃんと new しないといけません!
|
|
21 // copied.add(new REPCommand(cmd));
|
|
22 // }
|
|
23 // return optimize0(copied);
|
|
24 // }
|
223
|
25
|
|
26 // 継承したクラスでこれを実装してください 直接cmdlistを返すのもあり.
|
331
|
27 public List<REPCommand> optimize(List<REPCommand> cmdlist);
|
223
|
28
|
|
29 }
|