Tenho o seguinte cenário:
Preciso consultar diversos termos no Google, mas como ele detecta quando um robô faz isso, utilizo diversos serviços de proxy.
No construtor da minha classe BuscaResultadosGoogle
, recebo um objeto que implementa a interface GoogleProxy
, que tem um método getHttpService($url)
, que me retorna um HttpService
configurado com o que o proxy precisa (alguns proxies precisam de mais parâmetros, outros de menos...).
O código é o seguinte:
public function __construct($palavraChave, GoogleProxy $proxy = null)
{
if (is_null($proxy)) $proxy = new SemProxy();
$palavraChave = preg_replace('/\s/', '+', $palavraChave);
$url = "http://www.google.com.br/search?q=$palavraChave&num=100&cr=countryBR";
$this->http = $proxy->getHttpService($url);
}
Quando recebo um objeto que pode realizar uma função sem que eu saiba qual é, evitando assim diversos if
s ou case
s de um switch
, o padrão é o Strategy. E quando tenho um método que cria um objeto complexo, o padrão é o Factory Method. No meu caso, tenho os dois. Sendo assim, os dois padrões estão sendo aplicados corretamente?
Abraços e obrigado.