[OOP]klassen design

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [OOP]klassen design

    hi, ich habe eine etwas allgemeinere frage zum thema klassen design.

    ich habe mehrere klassen:
    - Smarty
    - CMain
    - CSession
    - CMySQL

    früher hab ich die klassen per extends vererbt. also:
    class CMain extends CSession{}
    class CSession extends CMySQL{}
    class CMySQL{}

    jetzt hab ich gehört, es sei besser die klassen nicht zu "vereben", sondern sie per new-operant unterklassen zu erstellen (sorry, weiß jetzt nicht, wie der spezielle begriff dafür lautet). also so zb:
    PHP-Code:
    class CMain{
      var 
    $session;

      function 
    CMain(){
        
    $this->session = new CSession;
      }

    jetzt zu meinen fragen:
    - ist es wirklich besser? warum?
    - und wie bekomm ich die smarty-klasse unter, wenn es ja leider keine mehrfachvererbungen gibt?
    nicht alles, was nass ist, kann fliegen

  • #2
    Eine Vererbung macht man dann, wenn eine Klasse spezialisiert wird. Z.B. hast du eine allgemeine Klasse Database und die Klassen MySQL beerbt Database.

    Wenn eine Klasse andere Klassen benötigt, gibt es verschiedene Ansätze das zu lösen. Wird von einer Klasse nur eine einzige Instanz benötigt, kann man das Singleton-Pattern implementieren:
    PHP-Code:
    foo {
    function &
    getInstance()
    {
        static 
    $instance;

        if(isset(
    $instance)) {
            
    $instance = new foo();
       }

        return 
    $instance;
    }

    Dann kann man ganz einfach eine Instanz mit $obj =& foo::getInstance() erstellen.

    Desweiteren kann man Objekte über Parameter der Methode übergeben. Dies ist dann sinnvoll, wenn man ein Objekt verwenden will, welches von nicht identisch ist. Wird jedoch ein Objekt nur intern in einem Objekt benötigt, ist es sinnvoll die Instanz auch nur intern zu erstellen.

    Kommentar

    Lädt...
    X