疑問が頭に浮かんだとき、 Head First Design Patternsの本を読んでいます。
最初の章では、交換可能なクラスを作成するために教えられた戦略パターンを研究しました。下の写真によると:

私の質問: ビジュアル インターフェイスを備えたデスクトップ アプリケーションを作成し、一部のユーザーが他のユーザーよりも多くの権限を持ってアヒルとその動作を管理できるようにしたい場合はどうすればよいですか? FlyRocketPoweredしたがって、たとえば、実行時に動作を作成できます。どうすればこれを達成できますか?
つまり、これらの動作は、クラスとして表されると奇妙に見えます。ユーザーレベルで編集可能にする方法がわからないため、、、またはサブクラスを作成/削除/変更する必要があるたびに、ユーザーFlyBehaviorはクラスを作成/削除/変更してソースコードを変更するように依頼する必要がありますが、これは私たちが望んでいるものではなく、開発者に依存しないものが必要です。QuackBehaviorDuck
編集
画面を作成したいとしますAdd Fly Behavior(編集ではなく、削除ではなく、追加するだけです)。2 つのフィールドがあり、1 つ目は 、2 つ目はメソッドが呼び出さBehavior Nameれたときに出力されるコンテンツです。fly()
ソース コードを編集することで、次のようなクラスを作成することでこれを行うことができます。
public class FlyRocketPowered implements FlyBehavior {
public void fly() {
System.out.println("I’m fl ying with a rocket!");
}
}
これをユーザーレベルで行うにはどうすればよいですか?