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" );