Evaluating Software Design Patterns
— the "Gang of Four" patterns implemented in Java 6

Class ImmutableSequence<E>

  extended by dk.rode.thesis.decorator.SequenceDecorator<E>
      extended by dk.rode.thesis.proxy.NonResettableSequence<E>
          extended by dk.rode.thesis.proxy.ImmutableSequence<E>
Type Parameters:
E - The type of values delivered by this sequence.
All Implemented Interfaces:
Sequence<E>, Copyable<Sequence<E>>, StrictCopyable<Sequence<E>>, Stringable<Sequence<E>>

public class ImmutableSequence<E>
extends NonResettableSequence<E>
implements Sequence<E>

An immutable sequence ensures that invocations of NonResettableSequence.reset(), next(), and copy() are ignored for the proxied sequence if and only if the proxied sequence is accessed through the proxy only.

The copy() method returns the same immutable sequence.

An immutable sequence exhibits the same bounded, consistent, and unique properties as the proxied sequence.

Implementation notes:
An immutable sequence corresponds to a protection proxy as described by Gamma et al. [Gamma95, p.208].

Gunni Rode / rode.dk
See Also:

Nested Class Summary
Nested classes/interfaces inherited from interface dk.rode.thesis.meta.model.Sequence
Constructor Summary
ImmutableSequence(Sequence<E> sequence)
Method Summary
 ImmutableSequence<E> copy()
          Returns this sequence.
 E next()
          Does not advance the proxied sequence.
Methods inherited from class dk.rode.thesis.proxy.NonResettableSequence
Methods inherited from class dk.rode.thesis.decorator.SequenceDecorator
bounded, consistent, current, equals, getSequence, getStringablePolicy, hashCode, state, toString, toString, unique
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface dk.rode.thesis.meta.model.Sequence
bounded, consistent, current, reset, state, unique
Methods inherited from interface dk.rode.thesis.strategy.Stringable
getStringablePolicy, toString

Constructor Detail


public ImmutableSequence(@Participant(value="RealSubject")
                         Sequence<E> sequence)

sequence - The sequence to proxy; cannot be null.
NullPointerException - If sequence is null.
Method Detail


public ImmutableSequence<E> copy()
Returns this sequence.

Specified by:
copy in interface Sequence<E>
Specified by:
copy in interface Copyable<Sequence<E>>
copy in class NonResettableSequence<E>
This sequence; never null.


public final E next()
Does not advance the proxied sequence.

Specified by:
next in interface Sequence<E>
next in class SequenceDecorator<E>
The current element; never null.
See Also:
Sequence.current(), Sequence.state()

Gunni Rode / rode.dk

Feel free to use and/or modify the Java 6 source code developed for this thesis AT YOUR OWN RISK, but note that the source code comes WITHOUT ANY — and I do mean WITHOUT ANY — form of warranty WHAT SO EVER!

The original thesis and source code are available at rode.dk/thesis.