为了账号安全,请及时绑定邮箱和手机立即绑定

继承和特定领域逻辑失去了独立性?

继承和特定领域逻辑失去了独立性?

PHP
慕斯709654 2023-09-22 14:48:37
很抱歉,我确信我无法很好地表达自己。它是一个游戏系统: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 相关联,但即使我们可以将其作为依赖注入传递到外部,它仍然看起来该类必须做“更多”事情,并且通过这样做,它失去了任何框架的独立性。
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您的游戏类不应自行发送通知。相反,您应该有一个服务类来跟踪分数,然后发送电子邮件。服务类可能与框架无关,也可能与框架无关。



查看完整回答
反对 回复 2023-09-22
  • 1 回答
  • 0 关注
  • 54 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信