[PHP/Programmierung] OOP - Ab wann verwendet ihr pro Context eine eigene Methode ?

Johnson

Code-Frevler
ID: 118054
L
20 April 2006
859
53
Hi,

ich frage mich gerade, wo ich die Grenze zwischen Wiederverwertbarkeit und Übersicht setzen soll.

Und zwar habe ich z.B. folgende Libs
- Auto.php
- Computer.php
- Keks.php

Diese benötigen jetzt z.B. jeder eine bauen()-Methode. Nun muss je nach Objekt (hier nicht im programmier-technischen Sinne gemeint) auf eine bestimmte Tabelle zugegriffen werden (z.B. weil je nach Objekt eine bestimmte Klasse benötigt wird), um das Bauen zu starten. Die bauen()-Methode geht aber intern immer nach dem gleichen Prinzip vor.

Ich habe jetzt 3 Möglichkeiten:

- In jeder dieser Libs wird eine komplett eigene bauen()-Methode definiert.

-In jeder dieser Libs wird eine komplett eigene bauen()-Methode definiert, allerdings werden vorher interfaces definiert

- In einer zentralen Bauen-Klasse wird die Bauen Methode verallgemeinert - Nachteil: Es ist eventuell nicht so übersichtlich (z.B. public function bauen($obj_id,$obj_anzahl,$obj_typ)).
Bei dem ganzen liese sich das Problem dann wieder verkleinern, wenn man für die DB-Interaktion das "Problem verkleinert" und eine kleine Methode insert_auto, insert_keks, ... schreibt. Zwischen diesen könnte dann z.B. die "Main-Insert-Methode" vermitteln.

Ich hoffe ich habe meine Frage einigermaßen deutlich dargestellt.

Gruß
 
BFabian schrieb:
Das über eine gemeinsame Basisklasse zu lösen ist sicher am elegantesten. Vllt hilft das auch weiter: https://de.wikipedia.org/wiki/Fabrikmethode
Edit: sry hatte urspr. den falschen Link kopiert

Haben mir trotzdem beide weitergeholfen :)

Also mach ich jetzt eine Basis-Objekt-Klasse mit den Methoden bauen(), ...

Dann habe ich z.B. die Klasse Auto_Klasse als Kindklasse von der Basis-Objekt-Klasse. Diese Klasse hat dann z.B. die Methode bauen_auto().

Oder hab ich da was falsch verstanden ?

Gruß + thx
 
Johnson schrieb:
...Diese benötigen jetzt z.B. jeder eine bauen()-Methode. Nun muss je nach Objekt (hier nicht im programmier-technischen Sinne gemeint) auf eine bestimmte Tabelle zugegriffen werden (z.B. weil je nach Objekt eine bestimmte Klasse benötigt wird), um das Bauen zu starten. Die bauen()-Methode geht aber intern immer nach dem gleichen Prinzip vor.
...
Tach auch,
falls ich das richtig verstanden habe würde ich auch zu einer zentralen basis klasse raten(scheint ja eine db klasse zu seine). Gerade wenn die projekte größer werden ist das vorteilhaft. Aus performance technischen gründen würde ich ich jedoch auf vater/kind klassen strukturen(z.b: class user extends db{}) verzichten. Es ist meist scheller das zu aggregierende objekt als neue instanz anzulegen oder es mit ‚global $db;’ heran zu ziehen. Zumindest ist das die erfahrung die ich gemacht habe.
 
Keylen schrieb:
Tach auch,
falls ich das richtig verstanden habe würde ich auch zu einer zentralen basis klasse raten(scheint ja eine db klasse zu seine). Gerade wenn die projekte größer werden ist das vorteilhaft. Aus performance technischen gründen würde ich ich jedoch auf vater/kind klassen strukturen(z.b: class user extends db{}) verzichten. Es ist meist scheller das zu aggregierende objekt als neue instanz anzulegen oder es mit ‚global $db;’ heran zu ziehen. Zumindest ist das die erfahrung die ich gemacht habe.

Hi,

okay, das werde ich auch noch so machen, danke :)

Gruß