我有一個 Product 類和 Builder 類,其中一個可以構(gòu)建該產(chǎn)品子類,從數(shù)據(jù)庫獲取數(shù)據(jù),另一個構(gòu)建器可以構(gòu)建該產(chǎn)品,從其他來源獲取數(shù)據(jù)。到目前為止我有一個界面:public interface ProductDao { Product buildProduct(RetrieveBy by, String s);}具有構(gòu)建選項的枚舉:public enum RetrieveBy { NAME, TYPE, BRAND}我不知道命名將要實現(xiàn)接口并將構(gòu)建從數(shù)據(jù)庫獲取數(shù)據(jù)的產(chǎn)品的類的最佳方式是什么,以及可以構(gòu)建從其他源(JSON、XML 或?qū)傩晕募┇@取數(shù)據(jù)的產(chǎn)品的其他類)。有人建議我只創(chuàng)建一個類并命名它ProductBuilder,但是,在我看來,這違反了單一責(zé)任原則。
2 回答

HUX布斯
TA貢獻1876條經(jīng)驗 獲得超6個贊
事實是:這里沒有硬性規(guī)則,只有慣例,最重要的是:您的公司/團隊/項目中存在的“先例”。
換句話說:做你周圍其他人所做的事情。
我的個人風(fēng)格:
我會稱該接口
ProductBuiler
... DAO 意味著“數(shù)據(jù)訪問對象”,該接口與此無關(guān)(直接)然后我會為該類命名
ProductBuilderImpl
?;蛘?,如果每個“源”都有一個實現(xiàn),那么簡單地JsonProductBuilder
或可能ProductBuilderForJson
.
但正如所說,真正的答案是:不存在規(guī)定名稱的普遍法則。您應(yīng)該使用對您和您的團隊“感覺”好的東西。

梵蒂岡之花
TA貢獻1900條經(jīng)驗 獲得超5個贊
我不知道我是否確定您的疑問,但是,DAO 是一個數(shù)據(jù)訪問對象,基本上它將應(yīng)用程序/業(yè)務(wù)層與持久層隔離。
如果您想創(chuàng)建一個構(gòu)建器接口,可能是類似ProductBuilder.java 的接口,以及ProductBuilderImp.java的實現(xiàn)。
添加回答
舉報
0/150
提交
取消