每日一模式之單例模式

昨天工做沒那麼忙,因此多謝了點跟模式相關的代碼php

單例模式,保證在一個進程中一個類只有一個對象設計模式

<?php
//單例模式:一個進程中始終某一個類只有一個對象存在
final class SignalOnly {
	protected static $instance =null;
	
	public static function getInstance(){
		if(empty(self::$instance)){
			//延遲綁定,簡單的說就是找到方法的最後的調用者
			//self::$instance = new static();
			self::$instance = new static();
		}
		return self::$instance;
	}
	private function __construct(){

	}

	private function __clone(){

	}
}
var_dump(SignalOnly::getInstance());


//能夠繼承子類的設計模式
class Signal {
	protected static $instance =null;
	
	public static function getInstance(){
		if(empty(self::$instance)){
			//延遲綁定,簡單的說就是找到方法的最後的調用者
			//self::$instance = new self();
			self::$instance = new static();
		}
		return self::$instance;
	}
	protected function __construct(){

	}

	protected function __clone(){

	}
}
class SignalSon extends Signal{

}

var_dump(SignalSon::getInstance(),Signal::getInstance());
相關文章
相關標籤/搜索