返信が送れてしまい申し訳ございません。結論を出し、コードとして形にするまで返答出来ませんでした。
softya(ソフト屋) さんが書きました:
オブジェクトは知らなくて済む情報はなるべく持た無いことが重要だと思います。
もし必要でも、神的なすべてを知っているオブジェクトと知らないで済む人間的オブジェクトに分けて知らないものには徹底して情報を渡さないことが派生的に修正を生み出さないコツだと思います。
コードの保守性を考えると、余分な情報は一切排除した方がいいのは分かります。
後に立てたトピックの事になりますが、あまり余分な情報を持たせたくない、渡したくないという気持ちの反面、余分な情報を持たせないと目的の動作を達成出来ないと言うどつぼにハマってしまいました。
http://dixq.net/forum/viewtopic.php?f=3&t=15992
上のトピックで載せたコードではGameMgr.classでインテントやデータの保存機能(openFileInputやopenFileOutput)を使うのに結局MainActivityのContextを保持させることになりましたし、(最初は不要かと思っていましたが結局情報の保存の為に使うことになりました・・・あまり外部の外部に連続して情報を投げるのも汚いgoto文みたいで気持ち悪かったですし。(最初はGameStatusを元にGameSurfaceView側で保存させようか迷いました。この時の思考はひたすら外部でデータを受け取らせて処理するか、ひたすら内部に動作に必要な情報を渡して内部で処理させるかと言う究極の2択状態に陥ってました。))これはもう経験で感じていくしかないんだろうなと悟りました・・・説明下手で申し訳ございません。
今考えると無理やり内部クラスでprivateメソッドを作るのではなく、独立した外部クラスでContextを渡して処理するようなものを作っても良かったのではないかとどんどん深みにハマってました。
それこそsoftyaさんのおっしゃる神的なすべてを知っているオブジェクトのことを指しているのかと思っています。
これ以上は変な深みにハマり、余計に目的が見えなくなりそうなので一旦解決としてトピックを区切らせていただきます。
淡い考えで書いてみた神クラス。
コード:
//すべてから独立した神クラス(こんな感じかなぁ・・・)
class goIsGod{
public static void dataSave(Context contex, String filename,Object data){
FileOutputStream fos = null;
ObjectOutputStream objFos = null;
try{
fos = mContext.openFileOutput("testapi.txt", Context.MODE_PRIVATE);
objFos = new ObjectOutputStream(fos);
objFos.writeObject(data);
fos.close();
objFos.close();
return true;
}catch(IOException e){
e.printStackTrace();
Log.e("FileInput","ファイルの書き込みに失敗。");
return false;
}
}
}
一通り組終えた後に『あの時あの様に組めば良かった』と後悔するとは・・・