我是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());
}
}
问题:
这是在我的应用程序中实现存储库的正确方法吗?