PHPのシングルトンモードとファクトリーモードの詳細な説明と例

墨辰丷
リリース: 2023-03-26 14:40:01
オリジナル
1597 人が閲覧しました

この記事では、主に PHP シングルトン モードとファクトリー モードの関連情報を詳しく紹介します。興味のある方は参考にしてください。1. シングルトン モードは、単一関数の作成に使用されます。平たく言えば、インスタンス化されたオブジェクトは一意です。

すべてのシングルトン パターンには、少なくとも次の 3 つの共通要素があります:



1. コンストラクターがあり、プライベートとマークされている必要があります

2. クラスのインスタンスを保持する静的メンバー変数があります

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(&#39;hello world&#39;);
 $b->setname(&#39;good morning&#39;);
 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート