第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

具有相同依賴性的多個(gè)嵌套類還是具有更大范圍的嵌套類更好?

具有相同依賴性的多個(gè)嵌套類還是具有更大范圍的嵌套類更好?

人到中年有點(diǎn)甜 2023-03-09 14:03:31
在我的 Spring Boot 應(yīng)用程序中,我正在創(chuàng)建一個(gè)工廠,用于創(chuàng)建具有相同接口和依賴項(xiàng)的不同對(duì)象,如下所示。@Componentpublic class FarmFactory {    @Autowired    private FarmRepo farmRepo;    public IFarm create(FarmType type) {        if (type == type.APPLE) {            return new AppleFarm(farmRepo);        } else if (type == type.ANIMAL) {            return new AnimalFarm(farmRepo);        } else {            return new EmptyFarm(farmRepo);        }    }}我想知道通過(guò)將 FarmRepo 依賴項(xiàng)注入每個(gè)農(nóng)場(chǎng)子類(蘋(píng)果、動(dòng)物、空)來(lái)限制 FarmRepo 依賴項(xiàng)的范圍是否更好?;蛘?,如果將單個(gè)依賴項(xiàng)保留在工廠的更高范圍內(nèi)會(huì)更好?;蛘?,可以將依賴項(xiàng) FarmRepo 與類型一起傳遞到 create 方法中,但不確定依賴項(xiàng)范圍的經(jīng)驗(yàn)法則是什么。
查看完整描述

3 回答

?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

根據(jù)我的經(jīng)驗(yàn),一個(gè)好的設(shè)計(jì)可以if-else盡可能的減少。所以我更喜歡將它注入到你的每個(gè)子類中。因此,將來(lái),如果依賴項(xiàng)也有子類,您將擁有更大的靈活性。



查看完整回答
反對(duì) 回復(fù) 2023-03-09
?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

我假設(shè)您的 IFarm 實(shí)現(xiàn)是模型類。在模型中擁有存儲(chǔ)庫(kù)不是一個(gè)好習(xí)慣。您應(yīng)該考慮將不同 IFarm 實(shí)現(xiàn)的創(chuàng)建移動(dòng)到 FarmRepo。

如果 IFarm 實(shí)現(xiàn)是某種管理業(yè)務(wù)邏輯的服務(wù)類,那么您應(yīng)該讓 spring 處理它,向它們注入 FarmRepo 實(shí)例。在那種情況下,您最好考慮使用抽象類而不是使用 IFarm,因?yàn)?FarmRepo 是它們之間的共同依賴項(xiàng)。

使用簡(jiǎn)單的工廠方法來(lái)實(shí)例化所需的運(yùn)行時(shí)類型沒(méi)有錯(cuò),如果需要的話,它需要在某個(gè)地方完成,它可以幫助您根據(jù) OCP(開(kāi)閉原則)獲得有效的設(shè)計(jì),防止您根據(jù)需要更改行為在類型參數(shù)上,而是使用多態(tài)性。


查看完整回答
反對(duì) 回復(fù) 2023-03-09
?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

我建議為您的實(shí)際實(shí)現(xiàn)(AppleFarm、AnimalFarm ..)創(chuàng)建命名 bean 并注入 FarmRepo。有了你的工廠,你真正的實(shí)現(xiàn)將不會(huì)由 Spring 管理(沒(méi)有 beans)。


@Component("appleFarm")

@RequiredArgsConstructor <- this is a Lombok feature check it out

public class AppleFarm implements Farm {


private final FarmRepo repo;

...

}


查看完整回答
反對(duì) 回復(fù) 2023-03-09
  • 3 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)