これは私の問題の非常に単純化されたバージョンですが、問題を解決するには十分なはずです。
DressingRoom、Person、Hat、Badge、および Foreman というクラスがあり、このアプリを使用すると、ドレッシング ルームにいる人にさまざまな種類の帽子を与えることができます。また、その人が職長であれば、バッジも取得できます。 . 私が望むのは、ユーザーが白い帽子をかぶればフォアマンになり、そうでない場合はただの一般人になってもらうことです。
特定のクラスを、Dressing Room クラスで行うのではなく、Person 内でそれ自体のサブクラスに設定することは可能ですか (これは簡単に実行できます)。
public class DressingRoom{
public var length:int;
public var occupant:Person;
}
public class Person{
public var name:String;
public var hat:Hat;
public function hatChanged():void{
if (hat.color==0xFFFFFF){
this = new Foreman(name,hat);
}
}
}
public class Hat{
public var size:int;
public var color:uint;
}
public class Foreman() extends Person{
public var badge:Badge;
public function hatChanged():void{
if (hat.color!=0xFFFFFF){
this = new Person(name,hat);
}
}
}