统一存储库模式

时间:2015-10-01 15:49:44

标签: c# wpf unity3d win-universal-app

我是Repository模式的新手,因此想询问我当前的(简化)模型是否正确,或者需要进行其他修改。

背景

我有一个通用Windows平台应用程序,它有一个主窗口。在这里,我显示Customers的简单列表(仅限姓名,姓氏和日期)。

然后我有一个按钮,用户可以编辑所选客户的属性(这将导航到新的DetailPage.xaml)。

设定:

这就是我设置我的存储库类的方法。接口:

public interface ICustomerRepository
{
    void AddCustomer(Customer newCustomer);
    void RemoveCustomer(Customer item);
    List<Customer> GetCustomers();
    void LoadCustomers(string sFilePath);
}

///Class Definition
public class CustomerRepository : ICustomerRepository
{
    private List<Customer> _customers;

    public void AddCustomer(Customer newCustomer)
    {
        if(newCustomer!=null)
        {
            if (!_customers.Contains(newCustomer))
                _customers.Add(newCustomer);
        }
    }

    public CustomerRepository()
    {
        LoadCustomers("defaultPath");
    }

    public void RemoveCustomer(Customer item)
    {
        if (item != null)
            _customers.Remove(item);
    }

    public void LoadCustomers(string sPath)
    {
        //would load data from a file here
        _customers = new List<Customer>()
        {
            new Customer() {ID = 1, Name ="Janko", Surname= "Hrasko", DateOfBirth = DateTime.Now },
            new Customer() {ID = 2, Name ="Jozef", Surname= "Mrkvicka", DateOfBirth = DateTime.Now.AddDays(-10) },
            new Customer() {ID = 1, Name ="Jozko", Surname= "Stefanovic", DateOfBirth = DateTime.Now.AddDays(-50) }
        };
    }

    public List<Customer> GetCustomers()
    {
        if (_customers == null || _customers.Count == 0)
            LoadCustomers("defaultPath");

        return new List<Customer>(_customers);
    }
}

在我的App.xaml.cs下,OnInitializeAsync下我已按以下方式注册此存储库:

_Container.RegisterType<ICustomerRepository, CustomerRepository>(new ContainerControlledLifetimeManager());

在我的MainWindowViewModel我有一个集合(我在页面上显示),如下所示:

    public ObservableCollection<Customer> col_customers
    {
        get
        {
            return new ObservableCollection<Customer>(_customerRepository.GetCustomers());
        }
    }

问题:

这是在我的应用程序中实现存储库的正确方法吗?

0 个答案:

没有答案