這是一個偏好問題。
你沒有得到什麼RepositoryItem
對象是強類型檢查。您必須假設您正在使用的RepositoryItem
的類型,或者您必須在代碼中進行手動檢查(請參閱下面的示例)。此外,由於RepositoryItem
屬性存儲爲元數據,因此您必須知道1)XML資源庫描述符中屬性的實際名稱,以及2)您需要知道類型,這需要類型轉換(例如:String firstName = (String) item.getProperty("firstName");
)。爲確保RepositoryItem
對象驗證的例子是類型爲「SKU」:
RepositoryItemDescriptor skuItemDescriptor = getCatalogTools().getCatalog().getItemDescriptor(getCatalogTools().getBaseSKUItemType());
if (!RepositoryUtils.isTypeOfItemDesc(itemDescriptor, skuItemDescriptor)) {
throw new IllegalArgumentException("RepositoryItem must be of type " + getCatalogTools().getBaseSKUItemType());
}
如果拿不使用「的JavaBeans」的方式,那麼你正在加大在你的應用程序運行時錯誤的風險。我的建議是你在使用RepistoryItem對象和包裝對象之間有一個健康的平衡。對於您計劃在大量代碼庫中使用的重要項目,我建議使用包裝器對象。
我建議如果您創建包裝對象,爲了保持一致性,您遵循Oracle Commerce使用的相同設計模式。例如,「訂單」項目被OrderImpl
包裝,並實現接口ChangedProperties
。
public class OrderImpl
extends CommerceIdentifierImpl
implements Order, ChangedProperties
http://docs.oracle.com/cd/E52191_03/Platform.11-1/apidoc/atg/commerce/order/OrderImpl.html
你說得對。我的一點是 爲開發人員使用RepositoryItem的便利。在上課時最小化錯誤,將幾個對象作爲方法的參數傳輸,獲得屬性而沒有開銷。 –