php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.12.2009, 01:19  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard [Erledigt] AF und Type Hinting

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();
   }
hier:
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 ()); 
   }
}
Bei beidem? Geschmackssache?

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:
class 
  
{
  function 
myMethod ($myObject);
  } 
Und A das Objekt B erhält und seine Methode parameterisiert aufruft
PHP-Code:
class A
  
{
  function 
myMethod ($bObject $myObject)
    {
    
$bObject->myMethode ($myObject);
    }
  } 
, wohin gehört dann das Type Hinting?
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).
nikosch ist gerade online   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.12.2009, 01:45  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Hat sich erledigt. Mache das jetzt anders.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 12.12.2009, 12:35  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

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!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 12.12.2009, 14:46  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

wie machst dus denn jetzt?
Chriz ist gerade online   Mit Zitat antworten
Alt 12.12.2009, 14:58  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Hallo Doc, hallo Chriz,

es geht mir schon um PHP. Ich erweitere jetzt das Produkt der Factory nachträglich. Konkret ging es mir um eine Parser-Factory, die für ein gegebenes Content-Objekt mit einem Textformat-Setting einen geeigneten Parser ausspuckt, welcher das Content-Objekt als Member einbindet.

Exemplarisch:
PHP-Code:
// Früher
$oText = new TextContent;

$oText->sContent 'This is onla a "**test**":test.de of the emergency broadcast __system__';
$oText->sFormat  'textile';

// ..

$oFac = new TextParserFactory (new TextileTextParserFactory);

$oParser $oFac->create ($oText->getFormat ());
$oParser->setContent ($oText);

echo 
$oParser->parse (); 
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ä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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php type hinting, vorteile type hinting, type hinting javascript, type hinting, php type hinted factory object, php objekte per type hinting übergeben, type hinting php, php type hinting factory, af und type hintingh, php factory type hinting, javascript type hints, type hinting abstract classes, abstract factory php, type hinting vorteile, php5 object factory pattern, php type hinting two classes, php type hinting funktioniert nicht, javascript type hinting

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:37 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum