>  기사  >  백엔드 개발  >  PHP 디자인 패턴 2: 팩토리 모드, 싱글톤 모드, 등록 트리 모드

PHP 디자인 패턴 2: 팩토리 모드, 싱글톤 모드, 등록 트리 모드

不言
不言원래의
2018-04-13 16:27:491281검색

이 글에서는 PHP 디자인 패턴 2: 팩토리 모드, 싱글톤 모드, 등록 트리 모드를 소개합니다. 이제 공유합니다. 필요한 친구들이 참고할 수 있습니다.

1. 팩토리 모드: 대신 팩토리 메소드 또는 클래스 객체에서 생성됩니다. 코드에서 직접 신규 생성
장점: 공통 클래스를 여러 위치에서 새로 작성해야 하는 경우 팩토리 모드를 사용하여 클래스 확장 및 유지 관리를 용이하게 합니다.
파일 디렉터리: Frame/Factory.php

<?php
namespace Frame;
use Frame\Database;
use Frame\Register;

class Factory
{
    static function createDatabase()
    {
        //$db = new Database(); //正常实例化类
        $db = Database::getInstance();    //获取单例模式的类
        Register::set(&#39;db&#39;,$db);          //将实例化后的类注册到全局注册树中
        return $db;
    }
}
//外部调用得到$db对象
$db = Frame\Factory::createDatabase();
//获取全局注册树中的对象
$db = Frame\Register::get(&#39;db&#39;);
//卸载全局注册树中的对象
$db = Frame\Register::_unset(&#39;db&#39;);
?>

II , 싱글톤 모드: 클래스 자체에서는 객체의 새로운 인스턴스화만 허용됩니다.
장점: 클래스는 외부에서 새로 생성될 수 없으며 객체는 클래스 자체에서 한 번 생성되므로 리소스 오버헤드가 절약됩니다.
파일 디렉터리: Frame/Database.php

<?php
namespace Frame;

class Database
{
    protected $db;
    
    //单例模式,私有化__construct()方法,不允许外部实例化对象
    private function __construct()
    {
    }
    //实例化本类
    static function getInstance()
    {
        if(self::$db) {
            return self::$db;
        } else {
            self::$db = new self();
            return self::$db;
        }
    }
}
//外部调用
$db = Frame\Database::getInstance();
?>

3. 등록 트리 모드: 전역 사용을 위해 전역 등록 트리에 개체 등록
저장 디렉터리: Frame/Register.php

<?php
namespace Frame;

class Register
{
    protected $objects;
    /*
    *    将实例化后的类注册到全局注册树中
    *    $alias :对象别名
    *    $object:实例化后的对象
    */
    static function set($alias,$object)
    {
        self::$objects[$alias] = $object;
    }
    /*
    *    卸载实例化后的类
    *    $alias :对象别名
    */
    static function _unset($alias)
    {
        unset(self::$objects[$alias]);
    }
    /*
    *    获取实例化后的类对象
    *    $alias : 对象别名
    */
    static function get($alias)
    {
        return self::$objects[$alias];
    }
    
}
?>

관련 권장 사항:

php 디자인 패턴 1 - 네임스페이스, 자동 로딩 클래스, PSR -0 코딩 사양                                                                                                            >​ ​ ​ ​ ​ ​ ​

위 내용은 PHP 디자인 패턴 2: 팩토리 모드, 싱글톤 모드, 등록 트리 모드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.