>  기사  >  백엔드 개발  >  싱글턴 패턴이란?

싱글턴 패턴이란?

藏色散人
藏色散人앞으로
2019-04-15 16:04:424933검색



싱글턴 패턴은 일반적으로 사용되는 소프트웨어 디자인 패턴입니다. 핵심 구조에는 싱글톤 클래스라는 특수 클래스가 하나만 포함되어 있습니다. 싱글톤 모드는 시스템에 클래스의 인스턴스가 하나만 있고 해당 인스턴스에 외부 세계에서 쉽게 액세스할 수 있도록 보장하여 인스턴스 수를 쉽게 제어하고 시스템 리소스를 절약할 수 있습니다. 특정 클래스의 객체 하나만 시스템에 존재하도록 하려면 싱글톤 패턴이 가장 좋은 솔루션입니다.

클래스에 인스턴스가 하나만 있고 이 인스턴스에 쉽게 액세스할 수 있도록 하려면 어떻게 해야 합니까? 전역 변수를 정의하면 언제든지 개체에 액세스할 수 있지만 여러 개체를 인스턴스화하는 데 방해가 되는 것은 아닙니다. 더 나은 해결책은 클래스 자체가 유일한 인스턴스를 저장하도록 만드는 것입니다. 이 클래스는 다른 인스턴스가 생성되지 않도록 보장하고 인스턴스에 액세스하는 방법을 제공합니다. 이것이 싱글톤 패턴의 패턴 동기입니다.

예를 들어, PHP 개발 과정에서 db 클래스(데이터베이스 작업 클래스)를 만든 다음 PHP 파일의 데이터베이스는 한 번만 연결할 수 있고 PHP 파일에는 하나의 데이터베이스 개체만 필요하기를 바랍니다! 데이터베이스에 여러 번 연결하면 PHP의 실행 효율성이 크게 떨어지기 때문입니다. 이는 또한 엄청난 시스템 오버헤드를 가져올 것입니다!

싱글턴 모드를 사용하여 데이터베이스 캡슐화

<?php
class db
{
//使用一个静态变量记录db对象初始化时为null
public static $db = null;
/* 私有构造函数是类无法完成外部的调用
* 意味着您将无法使用 $xx = new db();
*/
private function __construct(){
echo &#39;连接数据库....&#39;;
}
/* 
* 使用静态方法去获取数据对象
* 获取时先判断db对象是否已经存在,如果存在则直接返回db对象反正则创建这个对象
*/
public static function getInstance(){
if(self::$db == null){
self::$db = new db();
}
return self::$db;
}
public function query($sql){
echo &#39;执行sql命令&#39;;
}
public function __destruct(){
echo &#39;关闭数据库连接....&#39;;
}
}
$db = db::getInstance();
$db1 = db::getInstance();
$db->query(&#39;test&#39;);
$db2 = db::getInstance();
//输出 : 连接数据库....执行sql命令关闭数据库连接....

//DB 객체를 몇 번이나 획득하더라도 이름은 다르지만 모두 동일한 객체를 나타냄을 알 수 있습니다! 이것은 싱글톤 패턴을 구현합니다!



위 내용은 싱글턴 패턴이란?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 hcoder.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제