0

私はプロジェクトに取り組んでいますが、その段階ではさまざまな顧客向けにカスタマイズする必要があります。アプリケーションは、いくつかのビジネス ロジックと UI の 15 の異なるアクティビティで構成されます。アクティビティ A が B を開始し、B がアクティビティ C を開始すると仮定します。A は B について知っており、B は C について知っています。アクティビティ B を交換できるようにしたい (別のレイアウトを使用し、ユーザー インタラクションを処理するために少し異なるロジックを使用します)。 AとCは無傷。それを達成するための最良のアプローチは何ですか?さまざまな顧客に対して、ますますさまざまな活動 (同様の目的を果たす) を行うことになるため、ソリューションはさまざまな構成を処理する必要があります。

カスタマイズされたアクティビティを異なるライブラリに分割し、DI コンテナー (RoboGuice 2.0) を使用してそれらを注入することを計画していましたが、構成によっては、すべてのアクティビティを manifest.xaml に入れる必要があるようで、二重の作業 (マニフェストの編集) が必要です+ DI コンテナーの構成)。

4

2 に答える 2

1

A は B のことを知っており、B は C のことを知っています。

この場合、それはあまり賢明とは言えません。

アクティビティ B を交換できるようにしたいのですが (別のレイアウトを使用し、ユーザーの操作を処理するために少し異なるロジックを使用します)、A と C はそのままにしておきます。

次に、A、C、およびその他すべての共通コードを Android ライブラリ プロジェクトに配置します。B およびその他の顧客固有のコードを、ライブラリに依存する顧客固有のプロジェクトに配置します。A (ライブラリ内) が (顧客にとって) B を起動する最善の方法を判断するための何らかの手段を用意します。たとえば、すべての顧客固有のプロジェクトで B を同じもの<intent-filter>(適切なアプリ固有の、それ以外の場合はあいまいなアクション文字列) でアドバタイズすることができ、A はIntentそのフィルターに一致する を単純に使用できstartActivity()ます。A は、B の実装を知らなくても、一般的な意味で B について知っています (「ここに B のアクションがあります」)。

カスタマイズされたアクティビティを異なるライブラリに分割し、DI コンテナー (RoboGuice 2.0) を使用してそれらを注入することを計画していました

ビュイックでハエをたたくように聞こえるかもしれませんが、DI には長い歴史があるのではないでしょうか。

ただし、すべてのアクティビティを manifest.xaml に配置する必要があるようです。これには、2 つの作業 (マニフェストの編集 + DI コンテナーの構成) が必要です。

次に、DI コンテナーをドロップします。

于 2012-07-26T11:03:41.380 に答える
0

おそらく、コードで何かを行う代わりに、プロジェクトをバージョン管理下に置き、ファイルの一部について、顧客ごとに異なるブランチを持つことができます。

于 2012-07-25T16:50:41.840 に答える