Home of: [工房 "藤車"] > [SourceForge.net における PageMixer]

固定オブジェクト

本節では、 TokenAttribute の集合を扱う際のコストを、 どのように低減しているかを説明します。

クラス名

本ドキュメントでは、 クラスは全てクラス名のみで表記されています。 完全な名称は以下の通りです。

表記完全名
Token jp.ne.dti.lares.foozy.pagemixer.Token
Producer jp.ne.dti.lares.foozy.pagemixer.mixer.Producer
MutableStartTagToken jp.ne.dti.lares.foozy.pagemixer.MutableStartTagToken
MutableProducer jp.ne.dti.lares.foozy.pagemixer.mixer.MutableProducer
FixedStartTagToken jp.ne.dti.lares.foozy.pagemixer.FixedStartTagToken
FixedProducer jp.ne.dti.lares.foozy.pagemixer.mixer.FixedProducer

通常の設計

一般に、 格納される(されている)オブジェクトの数があらかじめわからない場合は、 格納や走査に ArrayListIterator を用いるのは、 左程悪い考えではありません。

しかし、一度オブジェクトの数が固定されると、 サイズの変更こそ困難であるものの、 ArrayList および Iterator に比べて、 配列は高速で効率的です。

PageMixer における判断

PageMixer においては、 Token および Producer クラスが createFixed() メソッドを定義(宣言)しています。

例えば、 MutableStartTagToken および MutableProducer といったいくつかの派生クラスは、 自分自身から 固定版のオブジェクトを生成します。 例えば、 FixedStartTagToken および FixedProducer といった固定版のクラスは、 自身の保有する要素を配列で格納します。

構築や変更が終了した後は、 当該オブジェクトの createFixed() 起動によって得られる固定版のオブジェクトを使うことで、 走査等における効率性を獲得することが出来ます。