PHP -单例模式 -简单工厂-抽象工厂

xiaoxiao2021-02-27  145

<?php //饿汉模式 //懒汉模式 class Single{ private static $ins=null; //private static Single s=new Single();//为懒汉模式 private function __construct(){ $this->ins=mt_rand(10,20); } public static function getIns(){ if(self::$ins===null){ self::$ins=new self(); } return self::$ins; } } $s1=Single::getIns(); $s2=Single::getIns(); print_r($s1); print_r($s2);

--------------------------------------------------------------

<?php //说到底是语言不够灵活导致的 class M{ } class S{ } class Factory{ function static getInstance($type){ if($type=='M'){ return new M(); }elseif($type='S'){ return new S(); } } }

------------------------------------------------------------------------------

<?php          //开放封闭元素,尽量通过新增类来实现, //不通过修改类来实现 class A{ } class B{ } class C{ } class D{ } interface Factoty{ public  static function getInstance(); } class AFactoty implements Factoty{ public  static function getInstance(){ return new A(); } } class BFactoty implements Factoty{ public  static function getInstance(){ return new B(); } } class CFactoty implements Factoty{ public  static function getInstance(){ return new C(); } } class DFactoty implements Factoty{ public  static function getInstance(){ return new D(); } }          $fact='DFactoty';     $db=DFactoty::getInstance();     print_r($db);

注意:抽象接口中有一个抽象方法是为了生成对应的工厂的,称之为抽象工厂

转载请注明原文地址: https://www.6miu.com/read-14911.html

最新回复(0)