单例模式对于通用 S3 包装类有意义吗?

问题描述 投票:0回答:1

我正在尝试为 S3 创建一个包装器。我有一些执行相同操作的存储桶和本地文件系统。我希望实现类似

S3Wrapper::bucket1->upload()
的目标,以简化开发并减少每个存储桶重复相同的方法。为包装器创建 Singleton 类是否有意义?我是设计模式的新手,所以如果它没有意义,请告诉我。

class S3Wrapper{
    private static $instance; 
    
    protected $disk = ''; 
    
    private function __construct(){}
    
    public static function bucket1(){
        if(!isset(self::$instance)){
            self::$instance = new S3Wrapper(); 
        } 
        self::$instance->$disk = 'bucket1';
        return $self::$instance; 
    }
    
    public static function bucket2(){
        if(!isset(self::$instance)){
            self::$instance = new S3Wrapper(); 
        }
        self::$instance->$disk = 'bucket2';
        return $self::$instance; 
    }
    
    public static function printDisk(){
        echo $this->$disk; 
    }
}

S3Wrapper::bucket1()->printDisk(); 
S3Wrapper::bucket2()->printDisk(); 

php laravel amazon-s3 design-patterns
1个回答
0
投票

S3Wrapper
上使用单例模式是个好主意。由于您使用的是 Laravel,因此可以使用 serviceprovider 来代替。考虑创建一个服务提供商而不是当前的实现。

© www.soinside.com 2019 - 2024. All rights reserved.