ホームページ >バックエンド開発 >PHPチュートリアル >PHPデザインパターンのファクトリーパターンの詳細説明
phpデザインパターンまとめ-ファクトリーパターン
ファクトリーパターンを使用する目的や目標は何ですか?
ファクトリ パターンの最大の利点はオブジェクトの作成にあり、オブジェクトの作成プロセスをカプセル化して、いつでも新しいオブジェクトを生成できるようにします。
コードを減らしてコピー&ペーストすると、結合関係が重くなり、コードの他の部分に影響を与えます。
平たく言えば、以前は オブジェクトを作成するには new を使用する必要がありましたが、今ではこのプロセスはカプセル化されています。
ファクトリ モードが使用されていないと仮定すると、クラス a がさまざまな場所で呼び出され、コードは次のようなインスタンスを作成します: new a() ある日、クラス a の名前を変更する必要があるとします。多くの呼び出しコードを変更する必要があります。
ファクトリー パターンの利点は、オブジェクトの作成にあります。
ファクトリーパターンの利点はオブジェクトの作成にあります。新しいオブジェクトを作成するためのファクトリ (関数またはクラス メソッド) を確立します。そのタスクは、オブジェクトの作成プロセスをカプセル化することです。
オブジェクトの作成には新しいフォームは使用されません。代わりに、オブジェクト インスタンスを作成するメソッドを定義します。
この記事では、主に PHP デザイン パターンのファクトリー モードとシングルトン モードを紹介し、ファクトリー モードとシングルトン モードの機能を簡単に紹介し、サンプルの形でファクトリー モードとシングルトン モードの実装と応用を分析します。 詳細は以下のとおりです:
ファクトリーモード: ニーズに応じて対応するオブジェクトを作成します
class factory{ function construct($name){ if(file_exists('./'.$name.'.class.php')){ return new $name; }else{ die('not exist'); } } }シングルケースモード: のインスタンスをのみ作成しますオブジェクト、これ以上のインスタンスは許可されません。リソース (データベース接続など) を保存します
class instance{ public $val = 10; private static $instance ; private function construct(){} private function clone(){} //设置为静态方法才可被类调用 public static function getInstance(){ /*if(!isset(self::$instance)){ self::$instance = new self; }*/ if(!isset(instance::$instance)){ instance::$instance = new self; } return instance::$instance; } } $obj_one = instance::getInstance(); $obj_one->val = 20; //clone可以调用clone()克隆即new出一个新的的对象 //$obj_two = clone $obj_one; $obj_two = instance::getInstance(); echo $obj_two->val; echo '<p>'; var_dump($obj_one,$obj_two);実行結果は次のとおりです:
20 object(instance)[1] public 'val' => int 20 object(instance)[1] public 'val' => int 20アプリケーション: データベース アクセス オブジェクト)🎜
class mysqldb{ private $arr = array( 'port' => 3306, 'host' => 'localhost', 'username' => 'root', 'passward' => 'root', 'dbname' => 'instance', 'charset' => 'utf8' ); private $link; static $instance; private function clone(){} private function construct(){ $this->link = mysql_connect($this->arr['host'],$this->arr['username'],$this->arr['passward']) or die(mysql_error()); mysql_select_db($this->arr['dbname']) or die('db error'); mysql_set_charset($this->arr['charset']); } static public function getInsance(){ if(!isset(mysqldb::$instance)){ mysqldb::$instance = new self; } return mysqldb::$instance; } public function query($sql){ if($res = mysql_query($sql)){ return $res; }return false; } //fetch one public function get_one($sql){ $res = $this->query($sql); if($result = mysql_fetch_row($res)){ return $result[0]; } } //fetch row public function get_row($sql){ $res = $this->query($sql); if($result = mysql_fetch_assoc($res)){ return $result; } return false; } //fetch all public function get_all($sql){ $res = $this->query($sql); $arr = array(); while($result = mysql_fetch_assoc($res)){ $arr[] = $result; } return $arr; } } $mysql = mysqldb::getInsance();
以上がPHPデザインパターンのファクトリーパターンの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。