用于翻译数据的设计模式

时间:2016-05-11 12:37:03

标签: c# oop design-patterns

我正在开发一个C#项目,我需要管理一个本地数据缓存并将其呈现在GUI上。

例如我有:

    public class DataFromOtherLibrary

现在我想创建一个类来帮助翻译我需要的信息

    public class MyDataModel
    {
            private DataFromOtherLibrary cache;
            public MyDataModel ( DataFromOtherLibrary Source)
            {
                    cache = Source;
            }
            public long Field1 { get { return cache.SomeField; } }
            public long Field2 { get { return cache.OtherFiled; } }
     }

现在我遇到的问题是我需要为每个MyDataModel创建一个DataFromOtherLibrary,拥有一个翻译类会更好。我不知道该怎么做,仍然实现属性(我需要数据绑定到)。

由于 马特

1 个答案:

答案 0 :(得分:1)

您应该使用包含所有DataModel的Provider,例如:

public class MyDataModelProvider
{
    public List<MyDataModel> DataModelList { get; set; }

    MyDataModelProvider()
    {
        loadDataModelList();
    }

    private void LoadDataModel()
    {
        foreach (Cachobject c in Cache)
        {
            this.DataModelList.Add(new MyDataModel(c.valueA,c.valueB));
        }
    }
}

对于此提供商,您还需要一个像Factory一样的工厂:

[Singleton(true)]
public class DataModelListProviderFactory
{
    private static DataModelListProvider dataListProvider;
    public DataModelListProvider getInstance()
    {
        if (dataListProvider == null)
        {
            dataListProvider = new DataModelListProvider();
           return dataListProvider;
        }
        else
            return dataListProvider;
    }
}

因为现在您拥有一个包含所有DataModel的Spot,并且您只需要接收一次。如果您有案例,或者在视图中显示所有数据,您还可以轻松地在列表中搜索特定模型。

您可以阅读有关工厂模式的更多信息here

希望有所帮助。