모든 객체 지향에서 가장 일반적인 세 가지 디자인 패턴은 팩토리 모드, 싱글톤 모드, 등록(컨테이너) 모드입니다.
팩토리 모드, 팩토리 메소드 또는 클래스는 코드가 아닌 객체를 생성합니다. 직접 새로 만들기
싱글톤 모드, 특정 클래스의 개체가 하나만 생성할 수 있도록
등록 모드, 전역적으로 개체를 공유 및 교환
공장 모드 Factory.php
<?php class Database{ public function __construct() { return "Database\n"; } } //工厂类 class Factory{ public static function createDatabase() { $db = new Database(); return $db; } } $db = Factory::createDatabase(); $db1 = Factory::createDatabase(); $db2 = Factory::createDatabase(); var_dump($db, $db1, $db2); #object(Database)#1 (0) { #} #object(Database)#2 (0) { #} #object(Database)#3 (0) { #}
싱글턴 모드 Singleton.php
<?php //单例模式 class Database{ protected static $db; //构造方法私有,防止在外层直接new private function __construct(){ //code } static function getInstance(){ if (self::$db) { return self::$db; }else{ self::$db = new self(); return self::$db; } } } $db = Database::getInstance(); $db1 = Database::getInstance(); $db2 = Database::getInstance(); var_dump($db, $db1, $db2); #object(Database)#1 (0) { #} #object(Database)#1 (0) { #} #object(Database)#1 (0) { #}
공장 모드는 싱글톤과 조합하여 사용됩니다
<?php class Database{ protected static $db; private function __construct(){ } static function getInstance(){ if (self::$db) { return self::$db; }else{ self::$db = new self(); return self::$db; } } } class Factory{ public static function createDatabase(){ return Database::getInstance(); } } var_dump(Factory::createDatabase());
클래스 등록 Register.php
<?php //注册器模式 class Register { protected static $objects; static function set($alias, $object){ self::$objects[$alias] = $object; } static function get($name){ return self::$objects[$name]; } function _unset($alias){ unset(self::$objects[$alias]); } } Register::set('db1', $db); Register::get('db1');
공장 모드, 싱글톤 모드, 등록 모드 등 PHP 디자인 패턴과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!