私はソフトウェア開発に比較的慣れていないということから始めたいと思います(私は過去1年間自習してきました)。
私は最近、ソフトウェアアプリケーションのさまざまなレイヤー、つまりUI、ビジネスロジックレイヤー、データアクセスレイヤーに頭を悩ませようとしています。私が学んだことを実践するために、データベースのバックアップを取り、後日それらのバックアップを復元できるアプリケーションを開発しています。
私の質問は、「システム」と「ユーザー」のオプションをどのように設計すればよいかということです。たとえば、ユーザーが選択したデータベースプラットフォーム(SQLまたはOracleなど)を選択できるようにします。XLMファイル内に情報を保存することを計画しています。プログラムでこの情報にアクセスする方法がわかりません( XMLファイルの読み取りと書き込みの方法を理解しています。
私の現在のアーキテクチャは次のようになります:(これは恐ろしい設計である可能性があることに注意してください。建設的な批判を喜んで受け入れています)。
UI:メインMDI。ユーザーオプションフォームデータベースマネージャーフォーム
BLL:データベース・マネージャー・フォームを駆動するデータベース・マネージャー・クラス。
DAL:データベースプラットフォームの種類ごとに1つのクラス。これらのクラスはすべて、私が設計した「DatabasePlatform」インターフェイスを実装する必要があります。この背後にある考え方は、コードをほとんどまたはまったく変更せずに、後日プラットフォームを追加できるようにすることです(「オープンクローズ」の原則を取り下げようとしています!)
私は少し確信が持てず、私のシステムオプションがこれらすべてにどこにどのように適合するか、そして最終的にはどこにそれらを配置するかについて非常に混乱していますか?どの時点でシステムオプションを確認しますか?UIまたはBLLにありますか?どのDALを選択するかを知る必要があるので、DALでチェックするべきではないと感じています。多分私はそれを完全に間違って設計し、チェックする必要があるのはDALにありますか?私はすっごく混乱しています...
最後に、インスタンスを作成せずに他のクラス/フォーム/エンティティからシステムオプションを呼び出すことができるように、システムオプションを静的クラスに配置する必要がありますか?
フィードバックや批判を歓迎します。文法上の問題についてお詫びします。英語は私の第一言語ではありません。