1

開発者が問題なく簡単に使用できるようにクラスを編成する必要がある場所/方法のベストプラクティスは何ですか? 特定のドメインに多数の機能を提供するために、C# 静的クラス ライブラリでフレームワークを作成しています。

これが私のデザインです。

私は静的クラスを作成しました:

public static class Pages
{
   //static prop to get access HomePage class
   public static HomePage HomePage
   {
       get {
              var _home = new HomePage();
              return _home;
           }
   }
   //static prop to get access Employee class
   public static Employee EmployeePage
   {
       get {
              var _employeePage = new Employee();
              return _employeePage;
           }
   }
   //static prop to get access Employer class
   public static Employer EmployerPage
   {
       get {
              var _employerPage = new Employer();
              return _employerPage;
           }
   }

}

例として、HomePage、Employee、Employer の個別のクラス (非静的) を作成しました。

//Implementation class 
public class Employee
{    
    public bool Status()
    {
        return true;
    }

.... more code.....

}

重要な質問は次のとおりです。

ユーザーはこのようなものにアクセスできるはずです。

bool _status = Page.Employee.Status();

or

Page.HomePage.SomeMethod();

私は正しい方向に進んでいますか?

懸念:上記のアプローチに関する唯一の懸念は、Pagesクラス.... クラスをさらに追加する予定であり、最終的にクラスにインスタンス化クラスが含まれることになりPageます。

または他のより良いアプローチ?

4

2 に答える 2

3

いいえ、私は絶対にそうしません。コンストラクター呼び出しの単なる構文糖衣 (またはこの場合はミスディレクション) である静的プロパティを持つのは奇妙です。実際に実装クラスを非表示にしたい場合は、もう少し理にかなっていますが (代わりに静的プロパティ メソッドを作成します)、ここでの利点はわかりません。

さらに、メソッドではなくプロパティStatusであるべきだと思われます。ああ、私には a のようには聞こえません。従業員データ自体のように聞こえます。タイプ名は、それらが何を表しているかを説明するものにしてください。したがって、次のようなものが必要です。EmployeePage

bool status = new EmployeePage().Status;
于 2012-09-18T18:44:39.687 に答える
0

Pages クラスは、クラスというより名前空間のように感じます。そして、そこにスケッチしたプロパティは、何かを取得するのではなく、ページを作成します。それは気分が悪い。あなたが構築したものは、はるかに工場になるようです。ファクトリが必要ですか、またはこれらのプロパティを Pages クラスに蓄積する目的は何ですか?

あなたは何を達成したいのかについて非常に漠然としているので、答えもそうです。しかし、おそらく定数を除いて、1 か所に非常に多くの静的要素があるとすぐに奇妙に感じます。

于 2012-09-18T18:57:04.197 に答える