Экземпляр приобретает тип интерфейса.

Код AS3:
var movable:IMovable = AFactory.construct(1);
movable.move(); // Утка полетела
movable = AFactory.construct(2);
movable.move(); // Собачка попрыгала
class AFactory {
public static function construct(value:uint):IMovable {
switch (value) {
case 1:
return new Duck();
break;
case 2:
return new Dog();
break;
}
}
}
interface IMovable {
function move():void;
}
class Duck implements IMovable {
public function move():void {
this.fly();
}
}
class Dog implements IMovable {
public function move():void {
this.jump();
}
}