1

データベースを呼び出すためのシンタックス シュガー、ログ記録、ルックアップ テーブルなどのサイト全体の情報など、一般的な機能があります。

これらをサイト全体の基本クラスに配置すると、それらにアクセスできますが、このように親クラスを使用するのは直感的に間違っているようです。基本クラスを「is a」ではなく「has a」関係として使用する方が理にかなっています。

それとも、これは良いデザインですか?これを行うのに問題はありますか?

4

3 に答える 3

3

親クラスはいくつかの基本機能をインスタンス化する必要があり、子クラスは差別化コードをインスタンス化する必要があります。

IMNSHO、あなたが説明しているのは、そのプロセスのろくでなしです。

于 2013-01-09T16:41:43.120 に答える
0

私はあなたがしていることが間違っていると信じています。

まず、オブジェクトは1つのタスク専用にする必要があります。これらの機能が継承されているかどうかに関係なく、同じクラスにデータベース接続の処理、ロギング、またはルックアップテーブルがあることは非常に見苦しいようです。

さらに、あなたが説明した機能は、上記のように、オブジェクトの正確なアイデアに適合しているように見えます。だから、あなたの質問に答えるために:はい、持っています-関係ははるかに良い解決策のようです。

一般的に、私はプログラム全体でアクセス可能な関数を別々のクラスに入れようとする傾向があります。可能であれば、静的メソッドを使用するようにしています。これらの背後にはシングルトンがある場合もあれば、ある種のキューがある場合もあり、まったく異なるものがある場合もあります。それでも、そのような機能の単一の原点を持つことで、コードは非常に柔軟になります。静的メソッドが適用できない場合、特にそのようなヘルパークラスに情報を格納する必要がある場合にのみ、他のクラスのインスタンスごとにオブジェクトをインスタンス化します。それでも、ファクトリ/プールの単一の起点静的メソッドは、多くの場合、良い考えです。

于 2013-01-09T16:54:11.360 に答える
0

POCO クラスにはプロパティのみが含まれ、メソッドは含まれないため、POCO クラスのみをシリアル化することが理想的です。

コードを配置すると、すべての子ページで同じになり、他に適切な場所がない場合は、一般的な機能の基本クラスを用意することをお勧めします。

たとえば、基本クラス内にヘルパー メソッドを配置することもできますが、それでは OOP が機能しなくなります。

私の意見では、または他のイベントの一部のロジックから派生しSystem.Web.UI.Pageて置換するクラスを持つことは、非常に優れた戦略です。OnInit event私はさまざまなプロジェクトでこのアプローチを使用してきましたが、baseblass のコードをグローバリゼーションとメンバーページのロジック (非公開ページへのリダイレクトなど) に限定しました。

于 2013-01-09T16:42:48.637 に答える