這裏是使用這種設計我應該公開構圖對象嗎?
我需要發佈一些API,以便外部世界可以配置用戶及其服務。配置用戶主要包括基於輸入參數(如id,密碼,級別等)創建新用戶並創建新的連接對象。一旦用戶對象被創建,服務配置是必需的。這是一個兩步的過程 - 啓用服務,修改服務細節。修改服務細節由一組操作組成。這些操作僅針對該服務。對於其他服務,這些操作將有所不同。
這是我目前的執行
用戶類是由service_manager,連接,組班。 service_manager類管理一組服務(比如ServiceA,ServiceB ... ServiceN)。每項服務都有一個海水班。
用戶類有一個公共職能assignService。該函數需要一個參數,用於標識服務類。它返回相應服務類的一個對象。這是一個相同的僞代碼。
serviceObjectA = user.assignService ('A');
後來,這個服務對象可用於執行操作,具體該服務。
serviceObjectA.performActionA1(...);
serviceObjectA.performActionA2(...);
serviceObjectA.performActionA10(...);
這裏是問題,我面臨着這樣實現:
一)功能的performAction需要用戶類的一些屬性(如ID,密碼,位置等)和連接對象。這些用戶屬性是準備請求所必需的。連接對象需要通過已創建的連接發送此請求。 目前,我在服務類構造函數中管理它,其中,我傳遞這些用戶屬性和連接對象作爲構造函數參數。由於各種服務類別需要不同的用戶屬性,因此它變得有點難以管理。
請爲此建議一些替代方案。
b)將服務對象暴露給外部世界真的是一種很好的做法嗎?
我還是OOP世界的新手,很抱歉,如果我理解錯誤的話。 如果你可以用僞示例來演示它,我將會非常棒。解決你的一些問題
感謝您的回覆。關於我的設計和使用。我希望這些服務能夠爲外界揭露。但我有點懷疑我是否應該通過用戶對象或服務對象公開這些performAction函數。 – rpg 2012-08-01 01:09:08
我已經更新了描述使用此設計的問題。請看看這些詞。請幫我說明我是否需要將這些服務對象暴露給外部世界? – rpg 2012-08-01 13:50:25
因此,聽起來好像根據使用哪種服務會有不同的操作,並且只有一種服務可以被用戶使用?我的第一個想法是,嘗試通過用戶來隱藏所有的API可能不是一個好主意,因爲它們中的很多不會被應用,因爲它們是特定於該用戶無法使用的其他服務的。或者用戶可以使用多種服務,但是每個服務在使用前都必須先設置好? – Carl 2012-08-01 16:43:13