c# - 'inherit'来自默认对象实例

时间:2017-04-05 14:28:28

标签: c# inheritance properties clone

我有一个工厂类Factory,它会吐出Document类的实例。实例化工厂时,它会创建Settings类的实例,并将引用存储在defaultSettings属性中。然后工厂调用defaultSettings.getDefaults()方法,该方法从数据库加载默认设置。

工厂创建的每个Document实例都应该使用默认属性值获取自己的Settings类实例,因为它们位于Factory的defaultSettings属性中(如在克隆中)。 Factory可以多次调用getDefaults()来更新默认设置;在程序生命周期内,可以创建100个douments,工厂可能已经更新了3次默认设置。

然后,文档实例可以在需要时修改自己的属性,而无需显着修改默认设置。

public class Document
{
    Settings mySettings;
    public Document(Settings defaultSettings)
    {
        mySettings = defaultSettings;
    }
    public void updateRead(bool Option)
    {
        mySettings.canRead = Option;
    }
}

public class Settings
{
    public bool canRead;
    public bool canWrite;

    public void getDeafult()
    {
        canWrite = // Expensive DB call
    }
}

public class Factory
{
    Settings defaultSettings;

    public Factory()
    {
        defaultSettings = new Settings();
        defaultSettings.getDeafult();
    }

    public Document createDocument()
    {
        // Create a settings instance with the current default values
        // and instantiate a document with these settings
    }
}

如何在不使用Reflection的情况下实现这一目标?这似乎是合乎逻辑的事情..是否有适当的设计模式,或者是否有更好的替代设置呢?

0 个答案:

没有答案