>백엔드 개발 >PHP 문제 >PHP 팩토리 모드와 싱글톤 모드의 차이점

PHP 팩토리 모드와 싱글톤 모드의 차이점

藏色散人
藏色散人원래의
2019-10-09 10:27:312906검색

PHP 팩토리 모드와 싱글톤 모드의 차이점

PHP 팩토리 모드와 싱글턴 모드의 차이점

싱글턴 모드: 반복되는 인스턴스화를 방지하고, 많은 수의 새로운 작업을 방지하며, 시스템 및 메모리 리소스 소비를 줄여 인스턴스가 하나만 존재하도록 합니다. object

header("Content-type: text/html; charset=utf-8");   //定义字符编码,防止乱码
/**
 * 单利类
 */
class Single
{
    private static $_instance;  //保存实例的对象
 
 
    private function __construct()  //定义构造方法
    {
 
    }
 
    private function __clone()  //定义一个空方法防止被外部克隆
    {  
 
    }
 
 
    public static function getInstance()    //定义一个获取实例对象的方法
    {
        if (!(self::$_instance  instanceof Single)) {
            self::$_instance = new self();
        }
        return self::$_instance;        //返回实例对象
    }
 
    /**
     * 测试方法
     */
    public function test()
    {
        echo "单利模式";
    }
 
}
 
 
$run=Single::getInstance();
$run->test();

Factory 모드: 인스턴스화된 클래스 이름을 변경해야 하는 경우 팩토리 메서드에서 특정 인스턴스화 위치를 검색할 필요 없이 팩토리 메서드에서만 수정하면 되는 모드입니다. 하나씩 코드를 짜보세요

header("content-type:text/html;charset=utf-8"); //定义字符编码,防止乱码
/**
 * 测试类一
  */
class demo1
{
    //定义一个test1方法
    public function test1()
    {
        echo '这是demo1类的test1方法'.PHP_EOL;
    }
}
/**
 * 测试类二
  */
class demo2
{
    //定义一个test2方法
    public function test2()
    {
        echo '这是demo2类的test2方法'.PHP_EOL;
    }
}
/**
 * 工厂类
 */
class Factoty
{
    // 根据传参类名,创建对应的对象
    static function createObject($className)
    {
        return new $className();
    }
}
/**
 * 通过传类名,调用工厂类里面的创建对象方法
 */
$demo = Factoty::createObject('demo1');
$demo->test1();             //输出这是demo1类的test1方法
$demo = Factoty::createObject('demo2');
$demo->test2();            //输出这是demo2类的test2方法

더보기 PHP 지식이 궁금하시면 PHP 중국어 홈페이지를 방문해주세요!

위 내용은 PHP 팩토리 모드와 싱글톤 모드의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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