From b11f2892ee9d83845323feb1bf02007db613186d Mon Sep 17 00:00:00 2001 From: schodet Date: Thu, 22 Apr 2004 21:55:20 +0000 Subject: Date: Design pattern singleton. --- 2004/i/nono/src/date/date.cc | 10 ---------- 2004/i/nono/src/date/date.h | 18 +++++++++++------- 2004/i/nono/src/date/test_date.cc | 2 +- 3 files changed, 12 insertions(+), 18 deletions(-) (limited to '2004/i/nono/src/date') diff --git a/2004/i/nono/src/date/date.cc b/2004/i/nono/src/date/date.cc index 25243ad..7553914 100644 --- a/2004/i/nono/src/date/date.cc +++ b/2004/i/nono/src/date/date.cc @@ -27,21 +27,11 @@ #include #include -// Pointeur vers l'instance unique. -Date *Date::m_instance = 0; - // Constructeur. Date::Date (void) { m_start = getDate (); m_round = -1; - m_instance = this; -} - -// Destructeur. -Date::~Date (void) -{ - m_instance = 0; } // Signale le début du match. diff --git a/2004/i/nono/src/date/date.h b/2004/i/nono/src/date/date.h index 1a40adc..c249dd2 100644 --- a/2004/i/nono/src/date/date.h +++ b/2004/i/nono/src/date/date.h @@ -29,15 +29,9 @@ class Date { // On travaille en millième de seconde, ça nous fait 24 jours dans un int. int m_start, m_round; - // Pointeur vers l'instance unique. - static Date *m_instance; public: - // Constructeur. - Date (void); - // Destructeur. - ~Date (void); // Retourne une référence vers l'instance unique. - static Date &getInstance (void) { return *m_instance; } + static Date &getInstance (void); // Retourne la date depuis le début du match, en millième de secondes. int round (void) { return m_round == -1 ? 0 : getDate () - m_round; } // Retourne la date depuis le début du programme. @@ -47,8 +41,18 @@ class Date // Attend un nombre de millisecondes. static void wait (int t); private: + // Constructeur. + Date (void); // Retourne la date système. int getDate (void); }; +// Retourne une référence vers l'instance unique. +inline Date & +Date::getInstance (void) +{ + static Date instance; + return instance; +} + #endif // date_h diff --git a/2004/i/nono/src/date/test_date.cc b/2004/i/nono/src/date/test_date.cc index fe020e1..84b9738 100644 --- a/2004/i/nono/src/date/test_date.cc +++ b/2004/i/nono/src/date/test_date.cc @@ -30,7 +30,7 @@ int main (void) { - Date d; + Date &d = Date::getInstance (); sleep (2); cout << "date " << d.start () << ' ' << d.round () << endl; d.startRound (); -- cgit v1.2.3