これは直接的なプログラミング関連の質問ではなく、アーキテクチャに基づく質問である可能性があります。私が直面している課題は、Android アプリケーションをいくつかの部分に分割して、高度に構成できるようにすることです。さまざまな顧客の要求に対応したいのですが、このアプリケーションは Google Play でリリースされるべきではないことに注意してください。今日、私のアプリケーションには、一種の標準的で構成可能なコンポーネントではないコンポーネントがいくつかあります。これらのコンポーネントの例は、Slidemenuを備えたActionbarSherlockです。下の図は、うまくいけばあなたのアイデアを与える
注:Workflow 2
とWorkflow 3
には、まったく異なるロジックとレイアウトがあります。
私のロジックの一部は既に処理されています。別のトランザクションを送信する方法があります。トランザクションのタイプは myemail
または awebservice
これを処理する方法は、次を実装することinterface
です。
public interface ISender {
public abstract int send(Context c, String attachmentPath, String identifier);
}
オブジェクトを返すSenderFactory
タイプのメソッドを持つクラスがあります。ISender
ISender
public static ISender createSender(Context context) throws InvalidWorkflowException {
if(WorkflowChooser.GetWorkflow().equals("mail"))
return new MailSender();
else if(WorkflowChooser.GetWorkflow().equals("webservice"))
return new WebserviceSender();
else
throw new InvalidWorkflowException("The Application doesn't support this way of transfering cases");
}
このメソッドは私のCreateTransaction
クラスから呼び出されます
public int createTransaction(String pcn, String fileName) throws MailException {
try
{
ISender s = SenderFactory.createSender(context);
sent = s.send(context, fileName, pcn);
}
catch(InvalidWorkflowException e) {
_log.error(e.getMessage());
}
return sent;
}
}
xml-file
このように、アプリケーションは、ビルドに含まれている に基づいて、使用するトランザクションのタイプを決定します。
お気づきかもしれませんが、この長い投稿を読んでいただければ、これをプロジェクト全体に適用して、ロジックだけでなく、UI
よりコンポーネントベースにしたいと考えています。ベストプラクティスとは何なのだろうか、これを行うための推奨される方法はありますか? 以前のプロジェクトの例はありますか?