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