この記事では、主に PHP シングルトン モードとファクトリー モードの関連情報を詳しく紹介します。興味のある方は参考にしてください。1. シングルトン モードは、単一関数の作成に使用されます。平たく言えば、インスタンス化されたオブジェクトは一意です。
すべてのシングルトン パターンには、少なくとも次の 3 つの共通要素があります:
1. コンストラクターがあり、プライベートとマークされている必要があります
3.このインスタンスにアクセスするには静的メソッドを使用します
シングルトン クラスは他のクラスで直接インスタンス化できませんが、それ自体でのみインスタンス化できます。インスタンスのコピーは作成されませんが、シングルトン クラス内に格納されているインスタンスへの参照を返します。
シングルトン パターンのインスタンス
<?php class Single { private $name;//声明一个私有的实例变量 private function __construct(){//声明私有构造方法为了防止外部代码使用new来创建对象。 } static public $instance;//声明一个静态变量(保存在类中唯一的一个实例) static public function getinstance(){//声明一个getinstance()静态方法,用于检测是否有实例对象 if(!self::$instance) self::$instance = new self(); return self::$instance; } public function setname($n){ //给变量$name赋值 $this->name = $n; } public function getname(){ //取变量$name的值 return $this->name; } } $a = Single::getinstance(); $b = Single::getinstance(); $a->setname('hello world'); $b->setname('good morning'); echo $a->getname();//good morning echo $b->getname();//good morning ?>
2. ファクトリ パターンは、オブジェクトを作成する特定のメソッドを持つクラスです。そのため、new を直接使用する代わりに、ファクトリ クラスを使用してオブジェクトを作成できます。
したがって、作成されるオブジェクトのタイプを変更したい場合は、ファクトリを変更するだけで済みます。
<?php //工厂类(关于运算符的操作) class factory{ public static function dx($ope){ switch($ope){ case "+": return new plus(); break; case "-": return new sub(); break; case "%": return new rem(); break; } } } $ope = factory::dx("+"); $ope->a = 20; $ope->b = 10; echo $ope->opera();
ファクトリーパターンの例
class Factory {//创建一个基本的工厂类 static public function fac($id){//创建一个返回对象实例的静态方法 if(1 == $id) return new A(); elseif(2==$id) return new B(); elseif(3==$id) return new C(); return new D(); } } interface FetchName {//创建一个接口 public function getname();// } class A implements FetchName{ private $name = "AAAAA"; public function getname(){ return $this->name; } } class C implements FetchName{ private $name = "CCCCC"; public function getname(){ return $this->name; } } class B implements FetchName{ private $name = "BBBBB"; public function getname(){ return $this->name; } } class D implements FetchName{ private $name = "DDDDD"; public function getname(){ return $this->name; } } $o = Factory::fac(6);//调用工厂类中的方法 if($o instanceof FetchName){ echo $o->getname();//DDDDD } $p=Factory::fac(3); echo $p->getname();//CCCCC ?>
関連推奨事項:
phpパターン設計シングルトンパターンphpパターン設計アダプタパターンPHP シングルトンの簡単な分析モード、PHP モードの簡単な分析_PHP チュートリアル以上がPHPのシングルトンモードとファクトリーモードの詳細な説明と例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。