我在这个模式上搜索得太多了,我觉得我很迷惑自己,所以你的意见将不胜感激。如何使用Repository模式连接点?
如果我有我的小应用程序的数据库,这将它描绘:
- 公司
- 名称
- 地址
- TemplateFilePath
- 部
- 名称
- 地址
- 报告编号
- 事故
- 报告编号
- 位置
- DriverLastNames
- 日期
基本上,我已经编写了一些代码,将我的模型对象序列化并反序列化为JSON,但代码很混乱且紧密耦合。我想基本上抽象一下,所以当我决定稍后使用数据库时,随着应用程序的增长,切换会相对容易。
现在,如果我要制作存储库(我认为它不会是一个存储库),那么方法签名会是什么样子?我会使用任何接口吗?这里是我开始这样做:
IRepository<T>
Add(T Entity)
Delete(T Entity)
Update(T Entity)
ICustomerRepository : IRepository<Customer>
GetAllCustomers()
GetCustomerByName(string name)
IDepartmentRepository : IRepository<Department>
GetAllDepartments()
GetDepartmentByName(string name)
然后我就开始想,我不会被写DRY代码...客户和部门库基本上是做同样的事情,唯一的区别是方法名称和实际的数据库表或文件的信息被存储在。我在做对吧?
从我一直在阅读的内容来看,存储库只是实际存储的包装。就像我正在使用SQLite一样,我将在存储库中建立连接,而我的常规代码只会处理Customer和Department类,不了解SQL连接或de/serializing,以及只知道存储库。
我认为跨资料库共享界面并不重要。它很漂亮,但我的每个存储库都有自己的界面 - 并且我使用它。现在,如果目标是*完全自动化CRUD *,那么单个界面可以从处理这个问题的代理中获得更多意义 - 但是当想要更具表现力时,自动CRUD很快就会崩溃。 – Paul