이 글에서는 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('db',$db); //将实例化后的类注册到全局注册树中 return $db; } } //外部调用得到$db对象 $db = Frame\Factory::createDatabase(); //获取全局注册树中的对象 $db = Frame\Register::get('db'); //卸载全局注册树中的对象 $db = Frame\Register::_unset('db'); ?>
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!