| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Mal ne blöde Frage: Beim Abstract-Factory-Pattern, bspw. bei diesem Beispiel, wo würdet Ihr das Type hinting (unten fett) setzen, wenn die Erzeugungsmethode noch einen Parameter mit einem Objekt bekommt (unten kursiv). hier: Code: public Client (AbstractFactory factory , MyClass myObject)
{
abstractProductA = factory.CreateProductA(myObject);
abstractProductB = factory.CreateProductB();
}
Code: abstract class AbstractFactory
{
public abstract AbstractProductA CreateProductA(MyClass myObject);
public abstract AbstractProductB CreateProductB();
}
class ConcreteFactory1 : AbstractFactory
{
public override AbstractProductA CreateProductA(MyClass myObject)
{
return new ProductA1(myObject->whatever ());
}
}
Das Type hinting in II schreibt ja I eigentlich vor, wegen der Parameter-Vereinbarung „AbstractFactory“ in der Client-Methode, trotzdem könnte ich an Client ja sonstwas als zweiten Parameter übergeben.. Eigentlich kann man die Frage abseits des Factory-Patterns stellen: Wenn B eine Methode mit einem Objekt-Parameter besitzt PHP-Code: PHP-Code: Argumente: - der richtige Objektparametertyp ist ja eigentlich B's Sache - Aber: A kennt ja B, schließlich ruft es ja auch eine Methode von A auf, also.. - Aber: A kenn B eigentlich nur, wenn das B-Objekt dort per Type-Hinting „standardisiert ist“ - Ergo: stellt sich eigentlich nur die Frage, ob man in A->methode () das Type Hinting für B setzen sollte -Argumente: --B's Parameter würde damit von A bestimmt->Abhängigkeit. Die Funktion von B->myMethod wäre nicht mehr austauschbar. --Ergo: A erhält kein Type Hinting für B's Objektparameter. Richtig? ---ErgoErgo: B müßte eigentlich ganz von vornherein mit $myObject initialisiert werden (vor Übergabe an A). Was mich zurück zur Factory bringt, wo das nicht geht.
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- Geändert von nikosch (12.12.2009 um 01:36 Uhr). |
| | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator und Wett-König | Hallo Nikosch, sofern du eine Sprache nutzt, die Generics beherrscht, solltest du unbedingt Generics einesetzen. So wird die API deutlich lesbarer und du kannst ohne weiteres ein AbstractFactory-Pattern umsetzen. Das Beispiel auf der verlinkten Seite halte ich ehrlich gesagt für nicht brauchbar.
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Illegal Offset type | BlackScorp | PHP Tipps 2009 | 6 | 10.11.2009 10:27 |
| [Erledigt] Ausgabe von PHP Scripten standardmässig mit text/plain als MIME Type ausli | den | Server, Hosting und Workstations | 4 | 29.09.2009 11:11 |
| [Erledigt] input type text und input type image in einer Linie | scherpa747 | HTML, Usability und Barrierefreiheit | 1 | 16.09.2009 12:02 |
| Fehler beim kompilieren von php 5.2.9 | malio | Server, Hosting und Workstations | 11 | 05.06.2009 18:40 |
| [Erledigt] input type file? | Sermon | PHP Tipps 2009 | 8 | 05.03.2009 19:17 |
| Objekte: Next() durch foreach() erstetzt - Object of type variant did not create... | badrandolph | PHP Tipps 2008 | 7 | 26.11.2008 19:14 |
| Wireshark SSL Handshake debugging-Handshake protokoll mittels PHP + Curl | brian johnson | Off-Topic Diskussionen | 0 | 06.11.2008 11:54 |
| XAMP gehts, auf realer server nicht: Fehler: Cannot use object of type ... as array | mysteryxxx | PHP-Fortgeschrittene | 4 | 03.08.2008 18:08 |
| [Erledigt] type image button funzt im IE nicht? | litterauspirna | HTML, Usability und Barrierefreiheit | 12 | 19.07.2008 15:59 |
| Type Hinting - must be an instance of integer, integer given | mAy^daY | PHP Tipps 2007 | 1 | 06.03.2007 14:55 |
| ftp_put: Type set to I | PHP-Fortgeschrittene | 2 | 26.09.2005 18:06 | |
| [Erledigt] input type wird nicht korrekt gefüllt | PHP Tipps 2005-2 | 5 | 11.07.2005 12:55 | |
| Wrong data type for start key | PHP Tipps 2005-2 | 3 | 05.07.2005 20:35 | |
| PHP 5 installation | PHP Tipps 2005-2 | 6 | 16.06.2005 14:19 | |
| Problem mit Wasserzeichen auf Bildern | pixelcut | PHP-Fortgeschrittene | 16 | 14.12.2004 02:36 |