我試圖用仿製藥實現工廠模式。我不知道如果我採取正確帶仿製藥的工廠模式
interface DocumentValidator<T> {
Boolean validate(Document document, T object)
}
class ShipmentDocumentValidator implements DocumentValidator<Shipment>{
@Override
Boolean validate(Document document, Shipment object) {
return true
}
}
class DocumentValidatorFactory {
static DocumentValidator forClass(Class clazz) {
if (clazz.simpleName.contains('Shipment')) {
return new ShipmentDocumentValidator();
}
}
}
調用代碼:
DocumentValidator validator = DocumentValidatorFactory.forClass(Shipment.class)
我不認爲我應該依賴於類的名字,但我怎麼能以其它方式實現
是的,壞主意檢查一個字符串。沒有編譯時驗證,所以如果您不小心鍵入「Shiqment」而不是「Shipment」,則會得到不正確的結果,並且不會顯示警告。我曾經使用一個系統,原始程序員經常圍繞硬編碼的字符串進行處理,並且發現了代碼不正確的情況,因爲他們在「運費」,「運費」而不是「運費」 capitalizatoin - 如果你錯過了差異,他們也是如此)等等。 – Jay