tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
238
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    david07 david07 ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    50
    Hi,

    habe mal eine allgemeine Frage zu Klassen.

    Für ein Projekt benötige ich häufig sehr viele Datenbank-Querys.
    Ist es sinnvoll/möglich eine globale Klasse für querys zu schreiben und später die daten über andere klassen zu verarbeiten?

    nach folgendem Prinzip:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
     
    Class Mysql {
     
     function insert($value)
      {
      //in DB schreiben
      }
      ......
    }
     
    Class Daten_verarbeiten{
     
    function mysql_initialisieren()
      {
     
       }
     
    function daten_schreiben($value)
      {
      //mysql::insert  -> daten schreiben!
      }
      ......
    }


    Ich hoffe ich ich konnte es einigermaßen verständlich erklären was ich meine...
    Was denkt Ihr? Ist das so sinnvoll/möglich? wie löst ihr das?

    Ich möchte es irgdnwie vermeiden in jeder klasse (das projekt besteht aus vielen eigenen modulen) ständig datenbankquerys zu schreiben.

    Danke schonmal!
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    sowas ist schon sinnvoll.
    Vor allem, wenn du vorher ein Interface definierst, welches angibt welche Methoden die Klasse enthalten soll.
    Wenn du das überall dann nur das Interface nutzt um auf die Methoden zuzugreifen und eine Factory um das Object zu erstellen, könntest du nachher so leicht die Datenquelle wechseln.

    Falls du nicht ganz verstanden hast, kann ich dir mal ein Beispiel bringen.

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    wod2008 wod2008 ist offline Mitglied Gold
    Registriert seit
    Nov 2007
    Beiträge
    140
    Ich denk er will eher eine Klasse haben die er einmal startet und dann überall verfügbar ist.
    Dafür würden sich das Singleton bzw Registry Pattern eignen.
     

  4. #4
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    @wod2008
    Sowas lässt sich auch durch eine Factory lösen.
    Er hat sie überall verfügbar und muss nur an einer Stelle was ändern, falls er die Datenquelle ändern möchte.
    Hier ist mal ein Beispiel. Ist zwar in Java, aber leicht portierbar auf PHP, da die Syntax fast gleich ist.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    
     
    public interface DataAccessObject {
     
        public void insert(Object object);
        public void delete(int id);
        public Object getById(int id);
        
    }


    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
     
    public class MySqlDAO implements DataAccessObject {
     
        MySqlDAO() {
            // TODO Auto-generated constructor stub
        }
        
        @Override
        public void delete(int id) {
     
        }
     
        @Override
        public Object getById(int id) {
            return null;
        }
     
        @Override
        public void insert(Object object) {
        }
     
    }


    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
     
    public class DAOFactory {
     
        private static DataAccessObject instance = null;
        
        public static DataAccessObject getDAO(){
            if(instance ==null)
                instance = new MySqlDAO();
            return instance;
        }
        
    }


    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
     
    public class TestKlasse {
     
        public static void main(String[] args) {
            
            DataAccessObject dao = DAOFactory.getDAO();
            
            dao.insert("Hallo");
            
        }
        
    }


    Also das DAO sollte schon bessere und mehr Methoden haben, hab es nur schnell zusammen geschrieben, um es deutlich zu machen.
    So muss er halt nur in der Factory was ändern, wenn er die konkrete Implementierung tauschen möchte. Durch die Factory hat er das DAO auch überall zur Verfügung.

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  5. #5
    david07 david07 ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    50
    Hi,

    wow das ist schonmal echt klasse Versuche grade das Prinzip nachzuvollziehen. Der Grundgedanke ist genau das was ich vor hatte @Sascha Schirra


    Ich verstehe aber diese Zeile nicht ganez:

    DataAccessObject dao = DAOFactory.getDAO();

    Ich kenne den Punkte "." in PHP eig. nur als Stringverbindung. Bin mir gerade nicht ganz klar wie der Punkt in bezug auf Methoden und Objekte arbeitet. Ist mir eig. nur aus JS bekannt....

    Gruß
     

  6. #6
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.961
    Der Punkt ist in Java equivalent zum Pfeil in PHP. Du müsstest also an der Stelle ein -> hinsetzen.
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  7. #7
    david07 david07 ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    50
    Oh, okay... I see

    bin irgendwie oben von PHP-Code ausgegangen
    Thx!
     

  8. #8
    Avatar von einfach nur crack
    einfach nur crack einfach nur crack ist offline mag Cookies & Kekse
    tutorials.de Premium-User
    Registriert seit
    May 2007
    Ort
    Dresden (Sachsen)
    Beiträge
    1.961
    Da steht eindeutig Java Code. Die Kunst des Lesens ist einfach nicht mehr das, was sie einmal war.
     
    Ich mag:
    • positive Bewertungen meiner Beiträge
    • ein Danke für meine hilfreichen Beiträge

    Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  9. #9
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    @david07

    Wenn du das so umsetzt, wie ich es oben gezeigt habe, solltest du nur drauf achten, dass du immer, wenn du eine Instance des DAOs brauchst, die Factory nutzt und nicht ein new DAO() machst.


    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  10. #10
    wod2008 wod2008 ist offline Mitglied Gold
    Registriert seit
    Nov 2007
    Beiträge
    140
    Der Punkt(bei DataAccessObject dao = DAOFactory.getDAO() steht hier für den :: in PHP, da man eine statische Funktion aufrufen will.
     

  11. #11
    david07 david07 ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    50
    Super, vielen Dank euch schonmal für eure Hilfe. Werde das die Tage mal enstrpechend umsetzten. Mal sehn obs klappt
     

Ähnliche Themen

  1. Generell: Frage zu IO-Exception
    Von andy72 im Forum Java
    Antworten: 5
    Letzter Beitrag: 12.10.10, 07:05
  2. Generell Erfahrung mit Synth
    Von derHarri im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 30.10.07, 14:49
  3. linksclick generell abfangen
    Von notebook20000 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 11.07.07, 02:48
  4. PHP-Funktionen Generell...
    Von Hawkster im Forum PHP
    Antworten: 1
    Letzter Beitrag: 21.04.07, 05:48
  5. Grafiken generell zu pixelig
    Von Mako im Forum Photoshop
    Antworten: 4
    Letzter Beitrag: 14.10.03, 23:13