想知道在多層應用程序結構中設置默認值的最佳方法。具體來說,如果某個工作流需要嵌套的一組函數調用,則默認是在上指定的所有函數,還是隻在頂層函數中傳遞?還是完全是一些其他模式?多層體系結構中的默認功能值
例如,考慮一個Web應用程序與3層:
- 資源層處理HTTP請求和響應,從客戶端
- 獲得HTTP參數業務層執行,以確定所需的業務邏輯需要信息
- 數據層訪問數據庫並返回請求的數據。
可以說客戶端想要獲得一個對象 - 對於這個例子,可以說它的一個Place
對象。地方對象有一個type
- 省,市,鎮,縣等
的資源功能可能是這樣的(使用Django HTTP對象):
def resource_get_place(request, type=None):
""" Gets a place of the specified type, or a place of any type if
type is None """
place = business_get_place(type=type)
return HttpResponse(request, {
"place" : place
}
然後其他兩個可能:
def business_get_place(type):
# Trivial in this case, used for consistency
return data_get_place(type)
def data_get_place(type):
# Get a place of specified type from the cache, or db,
# or wherever else. If type is None, get place of any type.
return place
這兩個函數'下面'這個堆棧中的資源層是否也默認類型爲None?我的一部分認爲這樣做會違反幹。我的另一部分認爲,這樣做的最可預測的和模塊化的方式是在堆棧中的每個函數默認鍵入'合理'到None。