类只包含静态函数,哪种设计模式适用?

jus*_*dev 1 php oop design-patterns

我构建了一个只有静态方法的类.该类基本上是一个URL构建器,包含2个公共静态方法.这些方法在同一个类中调用私有方法.

我的问题是:

可以重写这个类来应用设计模式吗?在我看来它接近门面或装饰!我的方法是否正确?

class UrlBuilder{
/**
 * @param Model $model
 * @return string
 */
private static function jsonFyModelAttribute(Model $model){
    return json_encode($model->attributes);
}

private static function objectFy(array $json){
    return json_decode($json['payload']);
}

/**
 * @param $str
 * @return string
 */
private static function buildFormUrl($str){
    $slug = self::encodeUrl($str);
    return $url = Yii::$app->params['formsUrl'].'pay?pay=' . $slug;
}

/**
 * @param Model $model
 * @return string
 */
public static function sign(Model $model){
    $jws = new SimpleJWS([ 'alg' => 'RS256']);
    $payLoad = self::jsonFyModelAttribute($model);
    $jws->setPayload([
        'payload' => $payLoad
    ]);

    $privateKey =    openssl_pkey_get_private("file:///var/pems/mykey.pem");
    $jws->sign($privateKey);
    return self::buildFormUrl($jws->getTokenString());
}

/**
 * @param $str
 * @return array
 */
public static function unSign($str){
    $data = self::decodeUrl($str);
    $jws= SimpleJWS::load($data);
    $publicKey = openssl_pkey_get_public("file:///var/pems/pubkey.pem");
    if ($jws->isValid($publicKey, 'RS256')) {
        return self::objectFy($jws->getPayload());
    }
}

/**
 * @param $str
 * @return string
 */
private static function encodeUrl($str){
    return urlencode($str);
}

/**
 * @param $str
 * @return string
 */
private static function decodeUrl($str){
    return urldecode($str);
}

}
Run Code Online (Sandbox Code Playgroud)

Soe*_*ren 10

问题是,为什么要使用设计模式?设计模式不是一切的解决方案,您的代码不能包含尽可能多的设计模式.顺便说一下:设计模式从不关注单个类.它始终是不同类之间的交互和通信以及如何处理它.

举个例子,我的建议是遵循KISS原则.当你真正需要它们时,模式会更晚出现(即使对于有经验的程序员来说,识别这种情况也很困难)

  • 我喜欢你的答案,而且我可以补充一点,每个特定的模式只解决一个特定的问题.所以,如果不是你的情况 - 请不要使用模式. (2认同)