私はActionScript3を使用しており、Bitmapを拡張するクラスを作成しています。また、Bitmapのすべての動作を実行し、bitmapDataをより柔軟性のあるbitmapDataのサブクラスに置き換えたいと考えています。
だから基本的に私が持っているのは(比喩)です:
Class Gunman
{
//Has-A
public var pistol : Gun;
public function Gunman(gun : Gun)
{
this.pistol = gun;
}
//methods
public function shoot():void ..
{
pistol.fire();
}
}
Class Gun
{
//constructor omitted cause it is unnecessary for this example
public function fire():void ..
}
次に、これら2つのクラスを拡張します。
Class Automatic extends Pistol
{
override public function fire():void
{
super.fire(); super.fire(); super.fire();
}
}
Class NavySeal extends Gunman
{
public function Enforcer(auto : Automatic)
{
super(auto);
}
}
問題は、人々がまだこれを簡単に行うことができるということです:
var eliteSoldier : NaveSeal = new Enforce(new Automatic());
eliteSoldier.pistol = new Gun();
そして、これは悪いでしょう。これを防ぐ方法はありますか?
「Gunman」はAPIの一部であるため、変更できません。