Los named constructors, o «métodos factoría» son pequeñas funciones estáticas que hacen las de generador de instancias de una determinada clase. Nos permiten que nuestros constructores sean más semánticos y robustos.
Algunos lenguajes como Java y Php fácilmente su uso:
<?php declare( strict_types = 1 );
namespace App;
/**
* Class PrintMarker
*/
class PrintMarker {
public $latitude;
public $longitude;
private function __construct( float $latitude, float $longitude ) {
$this->latitude = $latitude;
$this->longitude = $longitude;
}
public static function fromCoordinates( float $latitude, float $longitude ): self {
return new self( $latitude, $longitude );
}
public static function fromAddress( string $address ): self {
// Aquí realizaríamos por ejemplo una petición a la API de Google Maps, y obtendríamos las coordenadas
$latitude = 40.416906;
$longitude = -3.7056721;
return new self( $latitude, $longitude );
}
public static function fromDatabase( string $client ): self {
// Aquí realizaríamos una consulta a la base de datos de clientes y obtendríamos las coordenadas
$latitude = 40.416906;
$longitude = -3.7056721;
return new self( $latitude, $longitude );
}
}
// Named Constructor para pintar un marcador en un mapa desde unas coordenadas
PrintMarker::fromCoordinates( 40.416906, -3.7056721 );
// Named Constructor para pintar un marcador en un mapa desde una dirección
PrintMarker::fromAddress( "Puerta del Sol, Madrid" );
// Named Constructor para pintar un marcador en un mapa desde un registro en base de datos
PrintMarker::fromDatabase( "km0" );
Deja una respuesta