原来有两个类,开启缓存后实例化userCache类,未开启缓存实例化user类,分别调用一系列各自操作
class userCache{
public function addUser(){
//添加用户到数据库更新缓存
}
}
class user{
public function getUser(){
//添加用户到数据库
}
}
现在又多出来一个区分,微信端会有不同的处理,比如在微信端添加用户,需要给用户回复模板消息
class userCache{
public function addUser(){
//添加用户到数据库更新缓存
if(web 端){
发送站内信
}else(微信端){
发送模板消息给关注用户
}
}
}
class user{
public function addUser(){
//添加用户到数据库
if(web 端){
发送站内信
}else(微信端){
发送模板消息给关注用户
}
}
}
该怎么样设计让缓存和微信类互相独立,没有关系,不要套在一起,或者说怎么不改变原有类的代码,实现现在功能
class userWeixin{
protected $handler;
public function __construct($handler){
$this->handler = $handler;
}
public function addUser(){
$this->handler->addUser();
//发送模板给关注用户
}
}
//调用
if(开启缓存 and 客户端是微信){
$uer = new userWeixin(new userCache());
}else if(关闭缓存 and 客户端是微信){
$uer = new userWeixin(new user());
}else if(开启缓存 and 客户端不是微信){
$user = new userCache();
}else if(关闭缓存 and 客户端不是微信){
$user = new user();
}
这样好像可以,可是回头想想,如果现在又添加网易云信,需要判断,如果网站开启了网易云信,及时给用户发送一条消息,又怎么做呢?
还有,如果userweixin微信类产生的数据,和普通User类产生的数据不一样,需要缓存的数据也就不一样,那么第二个实现好像就不行了,该怎么敏捷的实现这个问题呢