Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Interfejsy - pytanie
Forum PHP.pl > Forum > PHP > Object-oriented programming
Micchaleq
Witam serdecznie,

Piszę tu bo jakby chciałbym usystematyzować swoje informacje na temat interfejsów i klas abstrakcyjny oraz zadać kilka pytań.

A więc tak czy wykorzystywanie interfejsów w przypadku jednego programisty ma jakiś sens?
Rozumiem, że jest to jakby taka tylko kontrola wersji która wymaga od klasy implementującej zdefiniowanie określonych metod.
Z drugiej strony jeżeli już jest to wykorzystywane czy np takie 100 interfejsów nie obciąży trochę aplikacji?
Czy ktoś testował działanie z interfejsami i zarówno bez nich?
skowron-line
Tak używanie interfaców przez jednego programiste ma sens (czytaj niżej)

Cytat
Object interfaces allow you to create code which specifies which methods a class must implement, without having to define how these methods are handled.
Interfaces are defined using the interface keyword, in the same way as a standard class, but without any of the methods having their contents defined.
All methods declared in an interface must be public, this is the nature of an interface.


http://php.net/manual/en/language.oop5.interfaces.php

Chyba zbytnio nie trzeba tłumaczyć.

Czy 100 interfaców nie obciąży aplikacji ? Hmmm nigdy się na tym nie zastanawiałem ale napewno w kwestii ilości ładowanych plików, no ale nie wszędzie interface jest potrzebny więc też nie można z nimi przesadzać.
sh3d2
Cytat(Micchaleq @ 24.10.2012, 10:07:48 ) *
Z drugiej strony jeżeli już jest to wykorzystywane czy np takie 100 interfejsów nie obciąży trochę aplikacji?
Czy ktoś testował działanie z interfejsami i zarówno bez nich?


Witaj,

jak dla mnie, to tego typu rozwazania to typowy przyklad "premature optimization". Prawdopodobnie (bardzo, na Twoim poziomie zaawansowania)
popelnisz w kodzie bledy, ktore obciaza aplikacje wielokrotnie wiecej niz tych kilka dodatkowych interface'ow, wiec nie ma sie co nimi przejmowac,
gdyz ew zysk wydajnosci spowodowany ich brakiem bedzie wiele razy mniejszy niz np nieoptymalne zapytania sql czy tez ich obsluga.

oczywiscie jak wszystko inne, nie powinno sie uzywac interfacow dla samego uzywania interfacow, tu na mysl przychodzi mi "syndrom wzorcow projektowych",
wciskanych gdzie sie tylko da i jak sie tylko da, byleby "bylo bardziej pro". mechanizm interfacow (dobrym przykladem beda tez wzorce) jest tylko narzedziem, ktore powinno byc uzywane tam gdzie jest potrzebne (i pod warunkiem ze jego dzialanie jest przez programiste zrozumiale).

Najprosciej rzecz ujmujac, interfacy sluza do "unifikacji" obslugi obiektow (klas) pozornie ze soba nie zwiazanych.
majac kilka klas implementujacych pewien interface mozemy np stworzyc metode, ktora jako arg przyjmie obiekt implementujacy nasz interface

  1. interface IParentInterface{
  2. public function getParent();
  3. }
  4.  
  5. class Foo implements IParentInterface{
  6. public function getParent(){
  7. return $this->parentNode;
  8. }
  9. }
  10. class Baz implements IparentInterface{
  11. public function getParent(){
  12. return $this->rootNode;
  13. }
  14. }
  15. class Parent implements IParentInterface{
  16. public function getParent(){
  17. return $this;
  18. }
  19. }
  20.  
  21. // -
  22.  
  23. public function DoSomethingWithParent(IParentInterface $object){
  24. $parent = $object->getParent();
  25. //...
  26. }


w tym momencie nie interesuje nas obiekt jakiej klasy przekazemy do metody, wazne tylko, zeby implementowal on nasz interface, nie interesuje nas rowniez, w jaki sposob dostac sie do "parenta" naszego obiektu (ukrywamy szczegoly implementacji).

mam nadzieje ze przyklad jest chociaz troche jasny, gdyby byly jakies niejasnosci, smialo pytaj

pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.