|
Evaluating Software Design Patterns — the "Gang of Four" patterns implemented in Java 6 |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectdk.rode.thesis.bridge.SequenceValueCollection<E,C>
dk.rode.thesis.bridge.SequenceValueSet<E,C>
E - The type of serializable values stored in this value set.C - The type of set storing the values in this value set.@Participant(value="Implementor") public abstract class SequenceValueSet<E extends Serializable,C extends Set<E>>
A sequence value set stores sequence values in a specific
java.util.Set implementation as specified by the
type parameter C.
Implementation notes:
The get(int) and numberOf(Serializable, int) methods
are not fast. They have a worst-case running time proportional to the
number of elements, n, in the value set, i.e. O(n). However,
numberOf can quickly deduce if a given value is contained in
the value set or not based on a hash lookup. For these simple classes,
this implementation is deemed adequate.
| Field Summary | |
|---|---|
private Iterator<E> |
iterator
The current iterator used to deliver the next value in first(), get(), or get(int). |
| Fields inherited from class dk.rode.thesis.bridge.SequenceValueCollection |
|---|
number, type, values |
| Constructor Summary | |
|---|---|
protected |
SequenceValueSet(Class<E> type,
C values,
int number)
Constructor, which creates this sequence value set to use the java.util.Set instance supplied as values. |
| Method Summary | |
|---|---|
boolean |
duplicates()
Returns false. |
E |
first()
Resets this generator to re-generate its first value, where after values can (again) be generated by SequenceValueGenerator.get(). |
E |
get()
Returns a value generated by this generator. |
E |
get(int number)
Returns the number'th value generated by this generator,
which may or may not have been generated yet. |
private E |
next(Iterator<E> iterator,
int count)
Helper method that will call next() count
times on iterator. |
int |
numberOf(E value,
int fromNumber)
Returns the number of the generated value supplied as value
using an offset of fromNumber, or Const.EOF if no
such value will ever been generated by this generator. |
| Methods inherited from class dk.rode.thesis.bridge.SequenceValueCollection |
|---|
checkNumber, copy, equals, getStringablePolicy, getValueType, hashCode, number, size, toCollection, toString, toString |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface dk.rode.thesis.bridge.SequenceValueGenerator |
|---|
ordered, sorted |
| Field Detail |
|---|
private Iterator<E extends Serializable> iterator
first(), get(), or get(int). Never null.
| Constructor Detail |
|---|
protected SequenceValueSet(Class<E> type,
C values,
int number)
java.util.Set instance supplied as values.
The actual type of values is determined by the type
parameter C.
The next value to return by get() is the value that
is the number'th value in this value set, and
this constructor ensures that this value set is initialised
accordingly!
Modifying values externally will affect this
value set and should not be performed. The result
of doing so is undefined - but never good.
type - The type of values stored in this set (and
values); cannot be null.values - The actual Set instance storing the sequence
values; cannot be null, empty, or contain null values.number - The number pointing the the number'th value
to be returned by the next call to get().
NullPointerException - If either argument is null.
IllegalArgumentException - If values is empty,
contain a null value, or if number is illegal.| Method Detail |
|---|
public final boolean duplicates()
public final E first()
SequenceValueGeneratorSequenceValueGenerator.get().
The number of generated values is reset when
this method is invoked.
If this generator does not generate ordered, nor
sorted values, it is undefined which value is
generated as the first value.
public final E get()
SequenceValueGenerator
The number of the generated value is one higher than the last
value returned by either SequenceValueGenerator.first(), SequenceValueGenerator.get(),
or SequenceValueGenerator.get(int).
The number of generated values is reset
when first() is invoked.
If this generator generates ordered or
sorted values, the generation of values
is consistent even after SequenceValueGenerator.first() have been invoked.
Otherwise the order is undefined.
SequenceValueGenerator.get(int)public final E get(int number)
SequenceValueGeneratornumber'th value generated by this generator,
which may or may not have been generated yet. The next call to
SequenceValueGenerator.get() from generate and return the number + 1'th
value.
The number of generated values is reset
when first() is invoked.
If this generator generates ordered or
sorted values, the generation of values is
consistent even after SequenceValueGenerator.first() have been invoked. Otherwise
the order is undefined, and this method may generate
different values for the same number each time invoked.
number - The number in question; cannot be zero or negative.
Is one-, not zero-based!
number'th value generated by this generator;
never null.SequenceValueGenerator.get(),
SequenceValueGenerator.numberOf(Object, int)
private final E next(Iterator<E> iterator,
int count)
next() count
times on iterator.
iterator - The iterator; never null.count - The number of times to call next().
next(); never null.
public int numberOf(E value,
int fromNumber)
SequenceValueGeneratorvalue
using an offset of fromNumber, or Const.EOF if no
such value will ever been generated by this generator.
Unlike SequenceValueGenerator.first(), SequenceValueGenerator.get(), and SequenceValueGenerator.get(int), this
method will not alter the number of values generated by this
generator.
value - The value to test; cannot be null.fromNumber - The number to start from; only relevant if the
values generated contain duplicates. Is one-, not zero-based! If
larger than SequenceValueGenerator.size(), this method will
always return EOF.
value,
or EOF if no such value can be generated by
this value generator.SequenceValueGenerator.get(int)
|
Gunni Rode / rode.dk | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||