Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 27.07.2008 Ostrzeżenie: (0%)
|
Witam serdecznie
Czytajac wasze posty czesto natrafialem na stwierdzenie ze singleton jest zlym wzorcem projektowym wykorzystywanym przy tworzeniu instancji klasy db. Jednak nigdzie nie moglem doszukac sie argumentów przemawiajacych za tym stwierdzeniem.. Podam przyklad: -----Klasa DataBase----- private $connect; private function __construct() { $conf=parse_ini_file('config/DsnConfig.ini',true); $dsn=$conf[Data][DSN]; $this->connect=DB::connect($dsn); if(DB::isError($this->connect)) { throw new Exception($this->connect->getMessage(), $this->connect->getCode()); } $this->connect->setFetchMode(DB_FETCHMODE_ASSOC); //$db=$this->select('Set CHARSET UTF8'); } static public function instance() { static $objDB; if(!isset($objDB)) { $objDB=new Database(); } return $objDB; } Powyzszy kod zapewnia nam to ze nie utworzymy wiecej niz jednego egzemplarza klasy Database. Zapewni nam to porzadzek w kodzie i w strukturze aplikacji a takze w jej wydajnoci bo przeciez utrzymujemy tylko jedno polaczenie z baza danych.. Teraz stawiam pytanie co jest w tym zlego ? Minusem jest na pewno to ze mamy sztywno okreslone, że uzywamy jednej bazy danych. Chciałbym uslyszec wasze opinie na ten temat.. pozdrawiam |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 4 Dołączył: 6.08.2006 Skąd: Lublin Ostrzeżenie: (0%)
|
Z Singletonem możesz mieć problem, kiedy będziesz chciał wymienić tę klasę na coś innego (przy większym projekcie). Jeżeli nad wszystkim pracować będzie kilka osób, niektóre mogą nawet nie zauważyć zmian i pisać dalej pod starą klasę - przecież nie mają szansy zauważyć, że API się zmieniło - pobierają sobie obiekt i nie mają pojęcia jakiego jest on typu. Inaczej jest w przypadku przekazywania tego jako parametr z podaną nazwą typu (klasy).
Przynajmniej ja mam takie wrażenie, po dwóch latach styczności z obiektówką w PHP - niech wypowiedzą się inni, bardziej doświadczeni użytkonicy forum... |
|
|
|
xerek instancje db 26.12.2008, 14:44:59
wrzasq @Albitos: przytoczony przez ciebie argument nie do... 26.12.2008, 20:15:06 ![]() ![]() |
|
Aktualny czas: 31.12.2025 - 00:15 |