Registery VS Factory

  • Toelichting
    Mensen die verstand van zaken hebben, zullen waarschijnlijk vragen hebben bij deze topic-titel: Inderdaad, geen standaard Registery VS Singleton, maar Registery VS Factory!
    Op dit moment ben ik bezig met het schrijven van een eigen MVC framework, wat voorlopig enkel de basis voorstelt. De meeste onderlinge relaties tussen (typen) classes heb ik in kaart gebracht, nu rest mij (voorlopig) nog één probleem.


    De probleemstelling
    Waar ik eerder altijd een Registery gebruikte, om
    Singleton te voorkomen, wil ik dit nu gaan veranderen. Eerst wilde ik mijn Registery gaan uitbreiden om problemen ermee op te lossen, maar nadat dit eigenlijk niet lukte, ga ik nu over op een andere oplossing.
    Een Registery is bedoeld als oplossing om Objecten door te geven aan verschillende andere Objecten, denk hierbij bijvoorbeeld aan het Database object. Maar met het idee in het achterhoofd dat meerdere database connecties mogelijk zijn, loopt deze techniek op een dood einde: Met een Registery moet de class die een database connectie nodig heeft zelf kiezen welke connectie hij nodig heeft, de omgedraaide wereld!
    Ik werk met het MVC model. Ik heb me al bedacht: Zodra een andere connectie nodig is dan de standaard connectie, is dit zaak van de controller, en niet van de models. De controller zal dus hoe dan ook, connecties door moeten geven aan de models. Maar hoe? En hoe komt de controller aan de connectie?


    (Verworpen) oplossingen
    Er zijn enkele oplossingen waar ik al aan heb gedacht:
    Singleton: Dit is geen mogelijkheid, zo kan er enkel één database connectie bestaan, dat willen we niet.
    Registery: Dit is een mogelijkheid, maar hierdoor ontstaat de omgedraaide wereld: Een class moet zelf gaan kiezen welke connectie hij gebruikt, in plaats van dat hij een connectie mee krijgt.
    Connecties meegeven: Dit zou kunnen, maar heel tijd alle connecties meegeven heb ik geen zin in. Zeker niet aan de controllers.
    Een factory: Mijn voorlopige oplossing. Een factory houd de connecties bij, en wanneer je een connectie nodig hebt, haal je deze uit de factory. Bestaat de connectie al? Dan geeft hij deze mee, bestaat de connectie nog niet, wordt hij aangemaakt.



    Mijn vraag aan jullie, hebben jullie nog andere oplossingen en of ideeën? Alle informatie is welkom!

  • Ik begrijp je hele gedoe wel :p Heb voor mijn alpha MVC dat nog niet echt erin verwerkt. Maar ik wou toch alles behalve de database class overnieuw schrijven nog ;) Als ik dan een goed antwoord vind zal ik hem wel opsturen:)

  • Dus jij wilt ipv 1 verbinding met de database, meerdere verbindingen mag ik vragen waarom je dat wilt?
    Of bedoel je meerdere verbindingen met meerdere databases?


    Ik had er wat over gegoogled, wat jij waarschijnlijk ook heb gedaan, maar ik kwam dit tegen : Hier.


    Voor de zekerheid maar neergezet, hier wordt namelijk ook nog gesproken over een abstract factory, dit is nog niet vermeld en misschien is dit wat je zoekt ;).

  • MrMees: Ga die link je je stuurde zo nog even doornemen. Voor nu heb ik de volgende class:



    En als praktische toepassing dit:


    Nog mensen ideeën wat beter kan, of wat juist goed is?

  • Bah geen a in de zin van array gebruiken in combinatie met een variabele:

    PHP
    self::$m_aInformation


    :P Tevens geen hoofdletters gebruiken. Zal morgen eens kijken of er nog wat dingen beter kunnen e.d. :)

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!