//Factory modeInterfaceiuser{ Public functiongetusername ();}classuserfactory{Static Public functionLoad$className) { return New Strtolower($className); } Static Public functionCreate$className) { return New Strtolower($className); }}classUserImplementsiuser{ Public functionGetUserName () {return' Jack '; }}userfactory:: Create (' User '),GetUserName ();//single-case modeclasssingleton{Static Public functiongetinstance () {Static $obj=NULL; if($obj==NULL) { return NewSingleton (); } return $obj; } Public functionGetUserName () {return' Jack '; }}singleton:: getinstance ()GetUserName ();//Observer PatternInterfaceobserve{ Public functiongetusername ();}classuser{Private $servs= []; Public functionRegister$obj) { Array_push($servs,$obj); return $this; } Public functionTriggle () {if($this-Servs) { foreach($this->servs as $key=$value) { $value-GetUserName (); } } }}ClassMyUserextendsUserImplementsobserv{ Public functionGetUserName () {return' Jack '; }}(NewUser ())->register (NewMyUser)->triggle ();
PHP code for three common design patterns