Design mode PHP5 implementation ---- Factory (Factory)

xiaoxiao2021-03-06  42

* /

/ *** 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);?>

转载请注明原文地址:https://www.9cbs.com/read-55050.html

New Post(0)