어플리케이션에서 하나의 객체 인스턴스를 가진다.
단점: 코트 재사용을 제한하고 유닛 테스트를 복잡하게 만드는 등 안티패턴으로도 간주한다.
ex) DB connector, Logger 등
class Singleton {
private static $instances = [];
public static function getInstance() {
$cls = static::class;
if (!isset(self::$instances[$cls])) {
self::$instances[$cls] = new static();
}
return self::$instances[$cls];
}
}
function clientCode() {
$s1 = Singleton::getInstance();
$s2 = Singleton::getInstance();
if ($s1 === $s2) {
echo "Singleton works, both variables contain the same instance.";
} else {
echo "Singleton failed, variables contain different instances.";
}
}
clientCode();
참고
1.8. 싱글턴 (Singleton) — DesignPatternsPHP 1.0 documentation
Docs » 1. 생성 패턴 (Creational) » 1.8. 싱글턴 (Singleton) Edit on GitHub 안티패턴이 될 수 있기 때문에 사용에 고려해 보아야 합니다! 더 나은 테스트가능성(Testablity)과 유지가능성(Maintainability)을 위해서
designpatternsphpko.readthedocs.io
PHP로 작성된 싱글턴 / 디자인 패턴들
사용 사례들: 많은 개발자는 싱클턴을 안티패턴으로 간주합니다. 그래서 PHP 코드에서의 사용이 감소하고 있습니다. 식별: 싱글턴은 같은 캐싱 된 객체를 반환하는 정적 생성 메서드로 식별될 수
refactoring.guru
728x90
반응형
'개발공부 > PHP' 카테고리의 다른 글
PHP call by reference (0) | 2024.03.02 |
---|---|
PHP 단점 - connection pool (0) | 2023.06.07 |
[공유] Clean Code PHP 한글판 (0) | 2023.05.16 |
[PHP] redis 라이브러리 - Predis 알아보기 (0) | 2022.12.30 |
[PHP] mysql_num_rows VS mysql_affected_rows (0) | 2020.04.27 |
댓글