[PHP] Klasse gebruiken via een eigen klasse

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik wel eens gedownloade klassen die vaak niet helemaal werken op de manier waarop ik wil dat ze werken (naamgeving en return waardes etc.). Nu heb ik bedacht om zelf een skelet klasse te maken met de juiste naamgevingen en hier vervolgens de gedownloade klasse te instantieren (het object is dan een property van mijn eigen klasse) en vervolgens functies te maken in mijn eigen klasse die de functies van de gedownloade klasse aanroepen en dingen aanpassen voor ze iets teruggeven als dit nodig is.

Mijn vraag is of dit wel de netste/beste manier is om hiermee om te gaan?

Acties:
  • 0 Henk 'm!

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ik denk dat het een beetje afhangt van hoeveel werk je in het schrijven van je skelet moet steken. Want als ik het goed begrijp moet je jouw skelet ook toch weer iets aanpassen om deze gelijk te trekken met de gedownloade klasse. je moet toch weer een methode schrijven die de 'lelijke' gedownloade klassemethode aanroept. En als die methode dan ook nog eens niet standaard types teruggeeft die dus alleen in die gedownloade klasse voorkomen dan moet je dat ook nog eens in je skelet opnemen. Ik denk dus dat je in de meeste gevallen alleen maar dubbelwerk zult doen.

Als het sneller is om de gedownloade klasse netjes te herschrijven zou ik geen skelet gebruiken. Als je merkt dat het gebruiken van een skelet echt sneller is en doet waarvoor je hem bedacht hebt dan zou ik die skelet optie netjes vinden.

[ Voor 27% gewijzigd door seamus21 op 15-02-2006 12:17 ]

Always shoot for the moon. Even if you miss you will land among the stars...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
En is dan de manier waarop ik het skelet maak de manier waarop jij dat ook zou doen? Dus een property maken van het object van de gedownloade klasse, en deze dan vervolgens gebruien voor het doorsluizen van de functies?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Kun je hem dan niet beter extenden :?

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:45
Dat is gewoon een 'adapter' die je maakt rond de gedownloade class. Waarom zou dat niet kunnen ?
Bosmonster schreef op woensdag 15 februari 2006 @ 12:21:
Kun je hem dan niet beter extenden :?
Waarom ?
Als hij op een andere manier die class wil benaderen, dan is extenden niet echt een optie.
Stel dat z'n class aan een bepaalde interface moet voldoen, om (makkelijk) bruikbaar te zijn binnen een bepaalde module, dan is de manier waarop TS beschrijft, de beste manier.
Ik zie het voordeel van inheritance in dit geval niet.

[ Voor 72% gewijzigd door whoami op 15-02-2006 12:23 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Vooral ook niet omdat ik de functies meestal een andere naam geef die past in mijn eigen standaarden kwa naamgeving.

Acties:
  • 0 Henk 'm!

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Zoals ik al zei is het afhankelijk van de tijdwinst. Als het herschrijven sneller is dan het maken van je skelet dan zou ik gaan voor het netjes herschrijven. Ook zoals eerder gezegd is het maken van een skelet, wat jij doet, te vergelijken met het zo koppelen van een onbekend iets zodat het bruikbaar wordt voor jou.

Plaatje omschrijving adapter & facade pattern:
Afbeeldingslocatie: http://img104.imageshack.us/img104/5880/adapterpattern5jl.png
Bron:
Head First Design Patterns
ISBN: 0596007124

Hier wordt het zo gedaan:

Je maakt een klasse met een var, property, etc van de klasse waarvoor je de adapter schrijft (de gedownloade klasse). In de constructor geef je de (gedownloade) bestaande klasse en je zet var gelijk aan de meegegeven param. Daarna maak je zelf methodes die jij netjes vind en roep je daarin weer de methodes van var aan. Hieronder een simpel voorbeeld:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class AdapterClass
{
   private OldClass oldclass;

   public AdapterClass(OldClass oc)
   {
      oldclass = oc;
   }

   public int newMethod()
   {
      return oldclass.oldMethod();
   }
}


Ik geef een java voorbeeld omdat ik hiervan vlug uit me hoofd de code wist :D

[ Voor 67% gewijzigd door seamus21 op 15-02-2006 13:17 . Reden: plaatje erbij, codevoorbeeld erbij, typo's ]

Always shoot for the moon. Even if you miss you will land among the stars...


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Omdat ik dacht dat ie alleen functionaliteit wilde toevoegen/aanpassen op een bestaande class.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Naar zoiets was ik op zoek, bedankt!
Pagina: 1