Is this possibly confusing code? A previous developer had an array of strings like so:

public static const PAGE_ONE:String     = 'PageOne';
public static const PAGE_TWO:String     = 'PageTwo';
public static const PAGE_THREE:String   = 'PageThree';
public static const PAGE_FOUR:String    = 'PageFour';
public static const PAGE_FIVE:String    = 'PageFive';
public static const PAGE_SIX:String     = 'PageSix';


When he wanted to open a new type of page he would write

switch ($page)
{
    case PAGE_ONE:
        // Do stuff
        break;

    ...

    case PAGE_SIX:
        // Do stuff
        break;
}


Which was all well and good, but I thought it could be condensed a little bit, so I created a little more functional approach.

In the constructor, this function is called setting up the table:

    private function setDefaultPages() : void {
        _pages[PAGE_ONE]          = function($xml:XMLList)  { return new PageOne( $xml ); }

        ...

        _pages[PAGE_SIX] = function($xml:XMLList)   { return new PageSix( $xml ); }
    }


Now, when the time comes to open a page, all I have to write is this:

_nextPage = _pages[$page](xml);


However, I am worried that I have hurt readability by doing this. Could anybody suggest a good middle-ground if it is so?
It seems to me that what you need is the State pattern.