php / *** factory mode ** factory model has many modifications, here is only an example * * @Author doodoo
/ *** Factory interface * / interface factory {public static function getInstance ();
/ ** * Registration class * * @Param int $ ID flag ID * @Param string $ CREATOR_FUNC constructor, equivalent to factory processing method * / public function regiSterclass ($ ID, $ CREATOR_FUNC);
/ ** * Instantiate specific class * * @Param int $ ID flag id * @Param Array $ args Parameters pass parameters for constructor * / public function creteObject ($ ID, $ args);
/ *** Specific Factory, Implementation of Interface * / Class MyFactory Implements Factory {Private $ RegistedClasses = Array (); static public $ instance = null; private function __construct () {}
/ ** * Sample instance of a class, guarantees only one factory in memory * / public static function getInstance () {if (Self :: $ instance == null) {Self :: $ instance = new myfactory (); Return Self :: $ installation;}
Public Function RegisterClass ($ ID, $ CREATOR_FUNC) {$ this-> registedClasses [$ ID] = $ CREATOR_FUNC;}
Public Function CreateObject ($ ID, $ args) {if (! isset ($ ID)) {Return Null;} Return $ this-> registedClasses [$ ID] ($ args);}}
/ *** The class that needs to be instantiated is equivalent to the product to make the factory * / class myclass {private $ create; private $ args; public function __construct ($ args) {$ this-> args = $ args; $ @ this -> Created = Time ();} public function getcreated () {return $ this-> create;}}
/ *** Specific method of instantiation * Equivalent to what processing method to use * This processing method can generate a MYClass instance (product) * / function myclasscreator ($ args) {Return New Myclass ($ args) }
$ factory = myfactory :: getInstance ();
$ factory-> registerclass (1234, "myclasscreat"); $ instance = $ factory-> CreateObject (1234, array ());
Print_r ($ INSTANCE);?>