Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

Δεκέμβριος 2007 - Δημοσιεύσεις

[Μαθαίνοντας Design Patterns] Singleton

Έρχεται μία φάση στην ζωή του προγραμματιστή που καταλαβαίνει πως κάτι του λείπει, πως ο κώδικας που γράφει είναι λίγο ελλειπής, ή ότι πρέπει να κάνει κάτι αλλά δεν είναι σίγουρος πως να το κάνει κομψά. Σχεδιάζοντας αντικειμενοστραφή προγράμματα είναι κάτι δύσκολο, σχεδιάζοντας κώδικα που θα επαναχρησιμοποιηθεί ακόμα δυσκολότερο. Εδώ έρχεται μία έννοια που έρχεται να συμπληρώσει κάθε προγραμματιστή, να βελτιώσει την τεχνική του, να μειώσει τον χρόνο και τον κόπο που καταβάλει για τον σχεδιασμό.

DESIGN PATTERNS

Μιας και εγώ πρόσφατα άρχισα να τα χρησιμοποιώ, θα πρότεινα για αρχή, να πούμε τι είναι στην πραγματικότητα design patterns και να εξετάσουμε μαζί μερικά patterns που χρησιμοποιούνται συχνά. Θα προσπαθήσω να τα πω όσο περιεκτικά μπορώ ώστε και εγώ να μαθαίνω μέσα από την αφαιρετικότητα και να αρκούν αυτά που γράφω για να ενισχύσω την διάθεσή σας να πειραματιστείτε και να διαβάσετε περισσότερα. Θα προσπαθώ να περιγράφω 2-3 patterns την εβδομάδα. Ή γλώσσα που θα χρησιμοποιώ δεν έχει καμία απολύτως σημασία μιας και εδώ μιλάμε για αντικειμενοστραφή προγραμματισμό και όχι για κάποια συγκεκριμένη γλώσσα (C++, Java, C#, ...)

Τι είναι design pattern;

Κάθε pattern περιγράφει ένα πρόβλημα το οποίο μας παρουσιάζεται συνέχεια στον χώρο μας. Στην συνέχεια περιγράφει την λύση που επιλύει το πρόβλημα με τέτοιο τρόπο που να μπορούμε να την ξαναχρησιμοποιήσουμε ξανά και ξανά με μηδενική προσπάθεια ( Ο χρόνος είναι χρήμα, οπότε κάνοντας τα design patterns κτήμα μας, u know the drill ;) ).

Στοιχεία pattern
  1. Όνομα
  2. Το πρόβλημα που λύνει
  3. Την λύση που προτείνει, περιγράφει, προδιαγράφει
  4. Τις συνέπειες μετά από την χρήση. Συνήθως σε ένα πρόγραμμα οι συνέπειες είναι ο χώρος και ο χρόνος. Οπότε κάθε φορά στον έναν ζυγό έχουμε επαναχρησιμοποίηση, λειτουργικότητα, επεκτασιμότητα και στον άλλον, κόστος σχεδίασης, χρόνο
Είδη

Τα design patterns κατηγοριοποιούνται με βάση δύο παραμέτρους. Εμβέλεια και σκοπός. Επιγραμματικά αναφέρω σκοπούς και εμβέλειες και θα αφήνω σε εσάς στο τέλος κάθε pattern τι είναι κάθε ένα ;)

  • Εμβέλεια
    Ανά Κλάση
    Ανά Αντικείμενο
  • Σκοπός
    Για δημιουργία
    Για δόμηση
    Για συμπεριφορά
Design Pattern 1#: Singleton

Singleton είναι το pattern που μας διαβεβαιώνει ότι η κλάση μας έχει μόνο ένα στιγμιότυπο. Επίσης παρέχεται ένας συγκεκριμένος τρόπος για να μπορούμε να το ανακτούμε από οπουδήποτε. Ας πούμε ένα παράδειγμα. Πείτε ότι έχετε πολλούς εκτυπωτές στο σύστημά σας. Παρόλα αυτά όταν πάτε να εκτυπώσετε, η εκτύπωσή σας περνάει από έναν printer spooler. Θα μπορούσαμε να βάλουμε μια global μεταβλητή ώστε να μπορούμε να ανακτήσουμε από παντού το αντικείμενο, αλλά δεν μας εμποδίζει κάτι από το να δημιουργήσουμε πολλαπλά στιγμιότυπα της κλάσης αυτής. Η λύση είναι λοιπόν, η ίδια η κλάση να κρατάει την πληροφορία για τον εαυτό της, το πως θα δημιουργηθεί, το πότε και πως θα μας επιστρέφει το ένα και μοναδικό instance της (εαν έχει δημιουργηθεί).

 class Singleton
  {
    private static Singleton instance;

    protected Singleton()
    {
    }

    public static Singleton Instance()
    {

      if (instance == null)
      {
        instance = new Singleton();
      }

      return instance;
    }

Posted: Τρίτη, 18 Δεκεμβρίου 2007 4:11 μμ από George J. Capnias | 0 σχόλια
Δημοσίευση στην κατηγορία: ,

XNA Game Studio 2.0 released

Κύρια χαρακτηριστικά στο XGS 2.0

 

Installation

More to come παίδες!!! Ανοίξαμε μια ιστορία αγάπης με το XNA :D;)

Posted: Παρασκευή, 14 Δεκεμβρίου 2007 11:39 πμ από George J. Capnias | 0 σχόλια
Δημοσίευση στην κατηγορία: