我试图设计一个提供CRUD操作的解决方案。 我想为几个实体提供接口。每个类映射到单个实体的位置。每个类为每个实体提供CRUD操作。但是有些实体只提供某些操作。如仅读取和更新,创建和只读等。 我应该如何设计,以便我能够更好地扩展并为其他开发人员创建一个良好的界面?
我目前的设计:
5 Interface
IEntity, IReadItem, IDelete, ICreate, IUpdate.
Example IEntity -> Customer class
IReadList -> Read List Operations on Customer
IDelete-> Delete operation on Customer
ICreate -> Create Item operation on Customer
IUpdate -> Update Operation on customer
EntityFactory -> Instantiate the IEntity, and 4 operation concrete class.
-> getEntity(EntityType(enum)) : return Concrete IEntity Class
-> getReadList(ReadListType(enum),entity) : return concrete GetItemOperation Class
-> getDelete(DeleteType(enum),entity) : return concrete DeleteItemOperation Class
-> getCreate(CreateType(enum),entity) : return concrete CreateItemOperation Class
Entity -> Responislbe of caching own information and connection
Read,Create,Delete,Update -> Responsible of it own details and operation
Each entity have all or subset of the type 4 operation, CRUD.
有没有更好的方法来设计它?或对上述布局有何评论?
答案 0 :(得分:0)
我的建议是选择一个众所周知的现有设计模式来处理关系数据库。看看你的代码很难确定你要去哪一个。一旦你适应了合适的模式,你可能会发现找到解决方案更容易。
您可以阅读一些持久性选项here。 Martin Fowler还展示了数据源架构模式下列出的几个on this page。
当然,您也可以选择使用现有的ORM,例如Entity Framework或nHibernate。
答案 1 :(得分:0)
在询问了上面的实际设计目标之后......如果没有更具体的目标,我会说保持简单:
IEntity应具有Update和Delete方法,并且工厂应具有Read / List和Create方法。不支持该操作的实体/工厂应抛出异常或返回有意义的值。就是这样。