单例模式是为了让类只被实例化一次,比如在写文件等对资源的操作时,可以避免一个全局使用的类频繁地创建与销毁。
php代码实现:
class singel{
private static $i=null;
//避免被实例化新的对象
private function __construct(){
echo 'test';
}
//避免被clone新的对象
private function __clone(){
}
public static function index(){
if(self::$i == null ){
self::$i = new singel();
}
return self::$i;
}
}
//调用示例
singel::index();
singel::index();
singel::index();
输出结果:
运行了三次,但是只输出一个test。
单例模式违反了单一职责原则,作为一个类应该只关注自身内部逻辑。