设计模式初学,如有不足之处,还望指正。
介绍
单例模式是常见的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意
- 单例类只能有一个实例
- 单例类必须自己创建自己的唯一实例
- 构造函数是私有的
实现(php)
<?php
/**
* 单例模式
* Class Singleton
* ningsiy
*/
class Singleton
{
private static $_instance = null;
/**
* 防止在外部实例化对象
* Singleton constructor.
*/
private function __construct(){
echo 'Singleton()的实例化对象<br/>';
}
/**
* 实例化
* @return null|Singleton
*/
static public function getInstance(){
if (is_null(self::$_instance)){
self::$_instance = new Singleton();
}
return self::$_instance;
}
/**
* 阻止在外部克隆对象
*/
private function __clone()
{
// TODO: Implement __clone() method.
}
}
$sin1 = Singleton::getInstance();
$sin2 = Singleton::getInstance();
if ($sin1 === $sin2){
echo '同一实例化对象';
}else{
echo '不同的实例化对象';
}
python 实现
# 单例模式 ningsiy
class Singleton(object):
def __new__(cls, num):
if not hasattr(cls, '_instance'):
cls._instance = super().__new__(cls)
return cls._instance
if __name__ == '__main__':
class SingleTest(Singleton):
def __init__(self, s):
self.s = s
def __str__(self):
return self.s
test1 = SingleTest('Test')
print(test1)
test2 = SingleTest('ttttt')
print(test2)
print(test1)
网友评论