【问题标题】:Create instance of the class from base class从基类创建类的实例
【发布时间】:2011-07-28 12:38:11
【问题描述】:

我有从 DataAccessor 派生的 DataAccess 类。 DataAccessor 类是我在所有项目中使用的数据库基类。

Instance 方法是创建 DataAccess 类的新实例的助手。我想将 Instance 方法移动到 DataAccessor 基类,并从基类创建派生类的新实例。怎么做?

public class DataAccess : DataAccessor
{

    public static DataAccess Instance
    {
        get
        {
            return new DataAccess();
        }
    }
}

public abstract class DataAccessor 
{
}

【问题讨论】:

    标签: c# class inheritance


    【解决方案1】:
    public class Base<T> where T : new()
    {
        public static T Instance
        {
            get { return new T(); }
        }
    }
    
    public class Derived : Base<Derived>
    {
    }
    

    【讨论】:

    • 有趣。你能给我举个例子吗?
    • 我可以使用这个类来创建整数。 int foo = Base.Instance;那怎么办?
    • @iandotkelly,就个人而言,我唯一能想到的就是一个通用的单例实现。但我们都知道他们有多糟糕:)
    • @Moo-Juice:这不是 Singleton,这是 Factory。单例是你只能调用一次 new 的时候。
    • @GFK,我知道这一点。 iandotkelly 问为什么你可能会使用这样的东西,显然在单例情况下会有一个私有静态成员和一个检查。
    【解决方案2】:

    你考虑过Abstract Factory Pattern吗?

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 2011-11-02
      • 1970-01-01
      • 2021-02-19
      • 2017-11-24
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      相关资源
      最近更新 更多