相关疑难解决方法(0)

数据映射器,表数据网关(网关),数据访问对象(DAO)和存储库模式之间有什么区别?

我正在努力提高我的设计模式技巧,我很好奇这些模式之间有什么区别?所有这些看起来都是一样的 - 封装了特定实体的数据库逻辑,因此调用代码不了解底层持久层.从我的简短研究中,他们通常都会实现您的标准CRUD方法并抽象出特定于数据库的详细信息.

除了命名约定(例如CustomerMapper与CustomerDAO vs. CustomerGateway vs. CustomerRepository)之外,有什么区别?如果存在差异,您何时会选择一个而不是另一个?

在过去,我会编写类似于以下的代码(简化,自然 - 我通常不会使用公共属性):

public class Customer
{
    public long ID;
    public string FirstName;
    public string LastName;
    public string CompanyName;
}

public interface ICustomerGateway
{
    IList<Customer> GetAll();
    Customer GetCustomerByID(long id);
    bool AddNewCustomer(Customer customer);
    bool UpdateCustomer(Customer customer);
    bool DeleteCustomer(long id);
}
Run Code Online (Sandbox Code Playgroud)

并有一个CustomerGateway类为所有方法实现特定的数据库逻辑.有时我不会使用接口并使CustomerGateway上的所有方法都是静态的(我知道,我知道,这使得它不太可测试)所以我可以这样称呼它:

Customer cust = CustomerGateway.GetCustomerByID(42);
Run Code Online (Sandbox Code Playgroud)

这似乎与Data Mapper和Repository模式的原理相同; DAO模式(与Gateway相同,我认为?)似乎也鼓励特定于数据库的网关.

我错过了什么吗?有3-4种不同的方式做同样的事情似乎有点奇怪.

c# dao datamapper repository table-data-gateway

130
推荐指数
4
解决办法
3万
查看次数

在Zend中,为什么我们使用DB Model类和Mapper类作为两个独立的?

我正在研究zend项目,我指的是其他zend项目来创建新的Zend Project.But我不喜欢盲目地遵循该项目而不理解.在Zend Directory结构中,在Model类中,我看到的类主要有两种类型,如in

- models
   - DbTables
        - Blog.php  //Extends Zend_Db_Table_Abstract
   - Blog.php       // Contains methods like validate() and save()
   - BlogMapper.php // Also Contains methods like validate(Blog b) & save(Blog b)
Run Code Online (Sandbox Code Playgroud)

为什么遵循这种特定的结构?这是分开Object类和Database模型类吗?

请解释.

php oop design-patterns zend-framework poeaa

7
推荐指数
2
解决办法
4272
查看次数

PHP用户类是否应该扩展数据库类?

我不确定这是否完全是错误的,所以我正在寻找一些建议.

我已经建立了一个数据库类,其构造函数建立了与MySQL数据库的PDO连接.

我一直在关注单身人士和全球变量,但似乎总有人建议反对其中任何一个.

我正在尝试扩展数据库类的用户类,因此我可以调用PDO函数/方法,但维护单独的用户类代码.这是一件愚蠢的事吗?

php database pdo class

6
推荐指数
1
解决办法
5843
查看次数

Data Mapper与数据访问对象.区别.哪一个更好?

可能重复:
ORM/DAO/DataMapper/ActiveRecord/TableGateway的差异?

有人可以帮我理解数据映射器和数据访问对象模式之间的区别吗?我已经从zandstra的书中了解了数据映射器模式.但是当我搜索数据访问对象时,我发现有非常相似甚至相同的模式.另外,我想知道在编写自己的框架时应该使用哪一个(我正在尝试实现自己的mvc php框架,以了解现代框架的工作原理).

php database design-patterns domain-driven-design

6
推荐指数
1
解决办法
3285
查看次数