1

私が望んでいた状況はかなりあります

this=somevalue

Java では許可されます。たとえば、私がスーパークラスの Person にいて、タイプを Person から Customer に変更したい場合、次のような割り当てを行います

this=new Customer();

役に立ちます。個人のリストを保持する顧客関係システムがあり、役割に応じて異なる方法で処理したいと考えていますが、マスターの役割は 1 つしか許可されていません。したがって、人は顧客、従業員、友人、または...

すべての人は人として始まりますが、いつでもマスターロールに「昇格」することができます。後でマスターロールを変更したくなるかもしれません。

Factory や Dependendy インジェクションなどを使用しても、Role パターンを使用せずに機能するソリューションを取得することは依然として非常に難しいようです。

オブジェクトへの参照をオブジェクト自体で変更できるという望ましい効果を得るには、どのような回避策がありますか? 私が最初に考えたのは、すべてのアクセスを「真のオブジェクト」に委譲する Wrapper オブジェクトを持つことです。真のオブジェクトは、エンティティ、たとえば Person のインターフェイスを満たします。Person から Customer に移動したいことがわかっている場合、ラッパーは「真の」オブジェクトを交換します。これらの線に沿った解決策はありますか?

4

2 に答える 2

2

あなたが達成したいのは、 this ポインターを変更するだけでなく、インスタンスへのすべての参照を変更することだと思います。したがって、ラッパーを使用したアプローチが適しているようです。

于 2012-12-22T11:24:20.667 に答える
0

これらの線に沿った解決策はありますか?

はい。あなたのラッパーのアイデアは、一般的にstate patternと呼ばれる、一般的で実行可能なソリューションです。GoFより:

State パターンでは、オブジェクトは現在の状態を表す State オブジェクトに要求を委任します。

于 2012-12-22T11:24:25.163 に答える