gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:20:40 24 4
gpt4 key购买 nike

我构建了一个只有静态方法的类。此类基本上是一个 URL 构建器,包含 2 个公共(public)静态方法。这些方法调用同一个类中的私有(private)方法。

我的问题是:

能否重写此类以应用设计模式?在我看来,它接近于门面或装饰器!我的方法正确吗?

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);
}

}

最佳答案

问题是,为什么要使用设计模式?设计模式并不能解决所有问题,您的代码不必包含尽可能多的设计模式。顺便说一句:设计模式从不关注单个类。始终是不同类之间的交互和沟通,如何处理。

对于您的示例,我的建议是遵循 KISS原则。当你真正需要它们时,模式可能会出现得更晚(这真的很难,即使是有经验的程序员,也能识别这种情况)

关于php - 类只包含静态函数,适用哪种设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41997107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com