Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czy fabryka może ładować proxy dla parsera ?
daWeb
post 7.10.2017, 09:43:20
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 2
Dołączył: 3.12.2014

Ostrzeżenie: (0%)
-----


Czesc,

parser stron www 1mln stron wzorzec Fabryki.

Pytanie czy fabryka konkretnego parsera strony www może zajmować się bezpośrednim ładowaniem proxy ? w sensie jej abstrakcja ma metodę loadProxy() w której ciele wykorzystuje zagregowaną zależność ProxyManager do ładowania konkretnych proxy dla strony.

Tak by to wyglądało:

  1. abstract class AbstractFactory
  2. {
  3. /**
  4.   * @var ProxyManager
  5.   */
  6. private $proxyManager;
  7. /**
  8.   * @var Proxy
  9.   */
  10. protected $proxy;
  11.  
  12. /**
  13.   * @param mixed $proxyManager
  14.   */
  15. public function setProxyManager(ProxyManager $proxyManager)
  16. {
  17. $this->proxyManager = $proxyManager;
  18. }
  19.  
  20. /**
  21.   * @return mixed
  22.   */
  23. public function getProxy()
  24. {
  25. return $this->proxy;
  26. }
  27.  
  28. protected function loadProxy($type)
  29. {
  30. $this->proxy = $this->proxyManager->getFreeAndLock($type);
  31.  
  32. if (is_null($this->proxy)) {
  33.  
  34. throw new ExceptionFactory('Not found free proxy', ExceptionFactory::NOT_FOUND_FREE_PROXY);
  35. }
  36. }
  37.  
  38. abstract public function create(AdsSite $adsSite);
  39.  
  40. }


A tu konkretna Fabryka dla konkretnej strony

  1. class Factory extends AbstractFactory
  2. {
  3. public function create(AdsSite $adsSite)
  4. {
  5. $this->loadProxy($adsSite->type);
  6.  
  7. $parser = (new Parser($adsSite))
  8. ->setProxy($this->proxy->ip, $this->proxy->port);
  9.  
  10. return $parser;
  11. }
  12. }


Ten post edytował daWeb 7.10.2017, 11:17:19
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 03:50