Mercurial > hg > RemoteEditor > REPSessionManager
view rep/optimizers/REPCommandOptimizer.java @ 249:e44c1773d121
*** empty log message ***
author | kono |
---|---|
date | Wed, 03 Sep 2008 19:35:41 +0900 |
parents | 3680d8357429 |
children | f9fa876d3539 |
line wrap: on
line source
package rep.optimizers; import java.util.LinkedList; import java.util.List; import rep.REPCommand; public abstract class REPCommandOptimizer { // なんで、Interfaceじゃないの? // Interface じゃないせいで、NullOptimizer でも余計なコピーが生じている。 // 本来、最適化はコピーしながら作業するので、余計にコピーするのは良くない。 // まぁ、この方が安全臭いことはあるかも知れないけど。kono // リストとその中身のREPCommandをコピーするため. finalでよい? // final だとoverride できないので、このコピーを外すことは誰にも出来なくなって // しまう。kono public final List<REPCommand> optimize(List<REPCommand> cmdlist){ List<REPCommand> copied = new LinkedList<REPCommand>(); for (REPCommand cmd: cmdlist){ // ちゃんと new しないといけません! copied.add(new REPCommand(cmd)); } return optimize0(copied); } // 継承したクラスでこれを実装してください 直接cmdlistを返すのもあり. abstract protected List<REPCommand> optimize0(List<REPCommand> cmdlist); }