El Domain Model Pattern (algo así como ”Patrón del Modelo de Dominio”), consiste en una clase que representa objetos o responsabilidades particulares en nuestro software.

Por ejemplo, para trabajar con usuarios, cada usuario sería una instancia de una clase “Usuario”.

Normalmente al usar el Domain Model se representan los datos en una o más tablas de una base de datos. Por ejemplo, para la tabla de usuarios de un sistema.

  1. CREATE TABLE `usuarios` (
  2.   `id_usuario` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `nombre` varchar(100) DEFAULT NULL,
  4.   `login` varchar(100) NOT NULL DEFAULT ,
  5.   `password` varchar(64) NOT NULL DEFAULT ,
  6.   `email` varchar(100) DEFAULT NULL,
  7.   PRIMARY KEY  (`id_usuario`)
  8. ) ENGINE = MYISAM ;

Entonces escribimos una clase que represente a cada usuario y sus atributos; es decir el Domain Model:

  1. < ?php
  2. class Usuario {
  3.     public $id_usuario;
  4.     public $nombre;
  5.     public $login;
  6.     public $password;
  7.     public $email;
  8.  
  9.     // metodos para obtener de la BD
  10.     // los datos y asignarlos a las propiedades.
  11. }
  12. ?>

Para usarla debemos instanciarla:

  1. < ?php
  2. $fulano = new Usuario();
  3. echo $fulano->nombre;
  4. ?>

De esta forma dispondremos de las propiedades de los usuarios en nuestros objetos.

Este patrón es el que usamos principalmente en la actual arquitectura de gelato. Pero es importante tener especial cuidado en no caer en el anti-patrón Anemic Domain Model que como todos los anti-patrones hace que se pierdan los beneficios del uso de patrones en nuestro diseño.