亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

繼承和特定領域邏輯失去了獨立性?

繼承和特定領域邏輯失去了獨立性?

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 關注
  • 80 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號