【发布时间】:2020-10-12 19:07:05
【问题描述】:
正如我在 Java 和 C# 中看到的那样,我试图将其设为“通用”问题,并且我假设它也在其他 OO 语言中。
我知道访问数据并执行CRUD 操作的应用程序有三个“主要”框架:
在查看使用这三种设计模式之一的应用程序的教程和示例时,大多数(如果不是全部)都执行以下操作:
BaseRepositoryInterface(我有时将其视为接口,有时将其视为抽象类)
interface BaseRepositoryInterface {
findOne(integer id);
findAll();
create();
read(integer id);
update(integer id);
delete(integer id);
}
SpecificRepositoryInterface
interface SpecificRepositoryInterface implements BaseRepositoryInterface {
// Just Some Examples
specificActionNumberOne(integer id, String someString);
specificActionNumberTwo(integer id, Object someObject);
specificActionNumberThree(integer id, double someDouble);
}
ConcreteRepositoryClass
class ConcreteRepositoryClass implements SpecificRepositoryInterface {
Dao myDao;
// or
Dto myDto;
ConcreteRepositoryClass(Dao someDao)
// or
ConcreteRepositoryClass(Dto someDto)
{
this.myDao = someDao;
// or
this.myDto = someDto;
}
findOne(integer id){
// implement here ...
}
findAll(){
// implement here ...
}
create(){
// implement here ...
}
read(integer id){
// implement here ...
}
update(integer id){
// implement here ...
}
delete(integer id){
// implement here ...
}
specificActionNumberOne(integer id, String someString){
// implement here ...
}
specificActionNumberTwo(integer id, Object someObject){
// implement here ...
}
specificActionNumberThree(integer id, double someDouble){
// implement here ...
}
}
这在所有示例中并不总是完全相同,但它们都倾向于遵循相同的格式。
鉴于此,此设计模式有名称吗?
可以假设我正在寻找的这个模式是上述框架的“演示者”、“控制器”或“视图模型”部分,只是进一步抽象吗?
【问题讨论】:
-
我会说这就像“存储库模式”。 (请注意,例如,Spring Data 和 Micronaut Data 可以为您创建具体的实现,这些接口称为“存储库接口”。您的第一个接口命名为
CrudRepository<E, ID>,第二个命名为MovieRepository extends CrudRepository<Movie, Integer>。)
标签: java c# oop design-patterns crud