いくつかの機能 (スクロールの防止、インターネット接続の監視、向きの変更の防止など) を持つアクティビティを動的に構築できるようにしたいと考えています。
BaseActivity
すべての可能なプロパティとすべての機能の抽象メソッドを含む抽象を作成する必要はありません。BaseActivity
実際にそれらの関数のいくつかを実装するだけでよいサブクラスには、多くの空の関数実装があります。さらに悪いことに、別の機能 ( に追加する別のプロパティと関数のセットBaseActivity
) を考えた場合、 のすべての子を編集BaseActivity
して、新しい抽象関数を実装する必要があります (ほとんどの場合、空になります)。
継承の別のアプローチはBaseActivity
、私たちが持っている機能のほんの一部を実装する子クラスを作成することです。しかし、これには、機能の組み合わせごとに子クラスを作成する必要があり、機能が少なくても多すぎます。さらに、これにより、同じ機能を実装する 2 つ以上の子クラスの重複コードが多数発生します。
そこで、Decorator パターンを実装することを考えましたが、実際に新しいアクティビティをインスタンス化することはないと思います。常に を作成し、そのコンストラクターでIntent
指定してから呼び出しますSomeActivity.class
startActivity(new Intent(getApplicationContext(), SomeActivity.class));
アクティビティの実際のインスタンス化をインターセプトし、Decorator パターン操作を実行してから、OS/アプリケーションがそれをスタックの一番上に置く方法はありますか?
そうでない場合、他にどのようなアプローチが実行可能ですか?