これは、いくつかの(すべてではなく、いくつかの)同様のケースで私のために働いたアプローチの大まかな「スケッチ」です。過去にこれらのオプションに直面したとき、私はその小さなKISSが大好きなので、一歩後退しました-Keep it Simpleソフトウェアエンジニア。
基本的な (貧血?) 基本クラスから始めます。これらの複雑なオプションを (ポリモーフ) 子クラスとしてモデリングし始めます。共通性の層があることを喜んでください。それは長期的に見返りがあります (より洗練されたアプリケーションでは、おそらく食事スケジューラではありません)。例; データ フィールドがある場合は、「フィールド」クラスを使用できます: 「数値」/「テキスト」/「ブール値」/「URI」。戻る: URI: URL、電子メール、Wget; テキスト: TextField、TextArea、Literal、...
アプリケーションにとって意味のあるものでなければなりません。あなたは見ることができます:
- 食事:着席・軽食
- 着席:昼食・朝食・夕食
- スナック: モーニング ティー / アフタヌーン ティー / 夕食 / Raid the Fridge
アイデアは、静的な選択が定義で「開発」される可能性があるため、コンパイラとクラスの関係ロジックにコードを本当に馬鹿にするように要求することです。木曜日の昼食だとわかったら ... EAT = new lunch( 木曜日 ) ... コンストラクタを賢くすると、ずっと下にカスケードします。
この種のことをしようとする私の最初の「試み」は完全な混乱でした! そして、私はそれをあきらめました。次回はもっと考えますが、始めるのに十分な何かができるまで、いくつかのクラスを試してください(鉛筆と紙が役立ちます). それからクラスファミリーを試してみてください - そして情熱を持って REFACTOR を試してみてください。
幸運を :-)