Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System platnosci on-line - Jaki wzorzec?
jarexx
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 1.07.2009

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


Witam,
Jestem poczatkujacym w OOP i mam nastepujacy problem.
Mianowicie chce zapimlementowac w serwisie rozne systemy platnosci on-line (platnosci.pl, przelewy24.pl, Paypal, i jeszcze kilka innych zagranicznych.)
Chce sobie w panelu administracyjnym ustawiac, ktory system ma byc uzywany.
Wiem, ze musze wykorzystac jakis wzorzec projektowy (strategia?) i polimorfizm.
Wiem, ze wszystkie klasy obslugi roznych platnosci musza implementowac wspolny interfejs lub dziedziczyc po wspolnej klasie abstrakcyjnej.
Prosilbym was o jakis pseudo kod, jak rozwiazac ten problem, tak by w przyszlosci dodanie nowego systemu platnosci wiazalo sie z napisaniem jednej konkretnej klasy.
Mam problem z przelaniem mojej wizji dzialania na kod.
Nie wiem w ktorej klasie powinna byc podejmowana decyzja, ktory system platnosci ma byc uzywany etc. etc.
Prosze o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jarexx
post
Post #2





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 1.07.2009

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


Witam ponownie.
Przelalem moj pomysl na pseudo kod.
Czy mozecie mi powiedziec, czy moje rozwiazanie ma tzw. "rece i nogi"?
Prosze o wszelkie uwagi i komentarze.

  1. interface IPayment
  2. {
  3. public function preparePayment();
  4. public function makePayment();
  5. } // end class
  6.  
  7. //przykladowe klasy konkretne implementujace interfejs
  8.  
  9. class P24 implements IPayment
  10. {
  11.  
  12. function preparePayment()
  13. {
  14. .....
  15. } // end func
  16.  
  17. function makePayment()
  18. {
  19. .....
  20. } // end func
  21.  
  22. } // end class
  23.  
  24. class PlatnosciPl implements IPayment
  25. {
  26.  
  27. function preparePayment()
  28. {
  29. .....
  30. } // end func
  31.  
  32. function makePayment()
  33. {
  34. .....
  35. } // end func
  36.  
  37. } // end class
  38.  
  39.  
  40. class PaymentFactory {
  41.  
  42.  
  43. public static function createObject($idPaySystem)
  44. {
  45. switch ($idPaySystem)
  46. {
  47. case 1:
  48. $obj = new P24;
  49. break;
  50.  
  51. case 2:
  52. $obj = new PlatnosciPl;
  53. break;
  54.  
  55. default:
  56. $obj = new P24;
  57. }
  58. return new Payment($obj);
  59.  
  60. } // end func
  61.  
  62. } // end class
  63.  
  64. //poprzez konstruktor wstrzykujemy konkretny obiekt wybranego systemu platnosci
  65. class Payment
  66. {
  67. protected $obj;
  68.  
  69. public function __construct(IPayment $obj)
  70. {
  71. $this->obj = $obj;
  72. } // end func
  73.  
  74. public function preparePayment()
  75. {
  76. $this->obj->preparePayment();
  77. } // end func
  78.  
  79.  
  80. public function makePayment()
  81. {
  82. $this->obj->makePayment();
  83. } // end func
  84.  
  85. } // end class
  86.  


Przyklad uzycia:

  1. $idPaySystem = 1; // id systemu platnosci pobiore z ustawien
  2. $payment = PaymentFactory::createObject($idPaySystem);
  3. $payment->preparePayment();
  4. $payment->makePayment();
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 12:23