在C#中组织类

时间:2012-09-18 18:41:20

标签: c# domain-driven-design

对于在哪里/如何组织类以便开发人员可以轻松使用的方式,我们正在创建一个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类可以吗?

或任何其他更好的方法?

2 个答案:

答案 0 :(得分:3)

不,我肯定那样做。对于构造函数调用,有一个静态属性只是语法糖(或者在这种情况下是misdirection),这很奇怪。如果你真的想要隐藏实现类,它会更有意义(虽然我会改为使用那些静态属性方法)但是我没有看到这里的好处。

此外,Status听起来应该是属性,而不是方法。哦,Employee对我来说听起来不像Page - 这听起来就像员工数据本身。让您的类型名称描述它们代表的内容。所以你应该有类似的东西:

bool status = new EmployeePage().Status;

答案 1 :(得分:0)

Pages类感觉更像是命名空间而不是类。您在那里勾画的属性创建页面而不是获取某些内容。这感觉不对。你建造的东西似乎更像是一个工厂。你想要一个工厂,或者在Pages类中积累这些属性的目的是什么?

由于你对你想达到的目标非常模糊,答案也是如此。但是在一个地方有这么多静态会立即感到奇怪,除了常数之外。