很抱歉,我确信我无法很好地表达自己。它是一个游戏系统:
abstract class GameType
{
private $score;
public __constructor($score)
{
$this->score = $score;
}
public abstract function getName();
public function getScore()
{
return $this->score;
}
}
final class Soccer extends GameType
{
public function getName() :
{
return 'soccer';
}
}
final class Basketball extends GameType
{
public function getName() :
{
return 'basket ball';
}
}
final class Hockey extends GameType
{
public function getName() :
{
return 'hockey';
}
}
这说明了 3 种游戏,每种都可以得分,都有不同的名称(我知道,getName()可以用常量替换,但我们暂时忘记它)
现在这似乎很好并且独立于系统,假设它是由框架 A 的团队开发的,并且可以传递到框架 B 开发的另一个系统
到目前为止。一个新的要求,如果有分数,请发送电子邮件:
abstract class GameType
{
private $score;
public __constructor($score)
{
$this->score = $score;
}
public abstract function getName();
public abstract function notifyIfScored();
public function getScore()
{
return $this->score;
}
}
final class Soccer extends GameType
{
public function getName() :
{
return 'soccer';
}
public abstract function notifyIfScored()
{
FRAMEWORK1::sendEmail('score 1');
}
}
final class Basketball extends GameType
{
public function getName() :
{
return 'basket ball';
}
public abstract function notifyIfScored()
{
FRAMEWORK1::sendEmail('score 2');
}
}
final class Hockey extends GameType
{
public function getName() :
{
return 'hockey';
}
public abstract function notifyIfScored()
{
FRAMEWORK1::sendEmail('score 3');
}
}
发送电子邮件与 FRAMEWORK1 相关联,但即使我们可以将其作为依赖注入传递到外部,它仍然看起来该类必须做“更多”事情,并且通过这样做,它失去了任何框架的独立性。
蓝山帝景