私は基本的にコードエディタである個人的なプロジェクトに取り組んでいます。[新規]、[開く]、[保存]、[名前を付けて保存]、[すべて保存]、[閉じる]、[すべて閉じる]のメニュー項目がある標準の[ファイル]メニューを想像してみてください。
私は適切なデザインにこだわっています。現在私は持っています:
- ドキュメントを表すドキュメントクラス-コード編集コントロール、タブバーのそれぞれのタブ、およびキャプション、ファイル名、IsModifiedなどのさまざまなプロパティ。
- 開いているすべてのドキュメントを表すDocumentsクラス。New、Open(FileName)、...などのメソッドが含まれています
問題は、どのクラス/メニューコマンドがどのタスクを担当しているかがわからないことです。
たとえば、[ファイル]->[新規]メニューコマンドは簡単です。Documents.Newを呼び出すだけです。
しかし、[ファイル]-> [開く]はどうですか?Documents.Openメソッドは、パラメーターとしてファイル名を想定しています。したがって、このメソッドを呼び出す前に、ファイル選択ダイアログを開き、ユーザーにファイルを選択させ、ファイルごとにDocuments.Open(FileName)を呼び出す必要があります。このサポートコードを配置するのに最適な場所は、メニューコマンドで、Documents.Openを書き直してそこに配置しますか?
保存アクションについても同じです。どちらが節約の責任がありますか?Document.Editor.SaveToFile(FileName)を使用するDocumentsクラスですか、それともDocumentクラスにSaveメソッドを作成する方がよいですか?途中のどこかで、ユーザーに現在のドキュメントを保存するかどうかを尋ねる必要もあります...
私は立ち往生しています。何か案は?
編集:プログラミング言語はDelphiです。