2 回答

TA貢獻1796條經驗 獲得超4個贊
如果它們沒有共同的代碼,那么它們實際上只是兩個獨立的類。您可能甚至不希望管理代碼出現在瀏覽器中,因為無論如何它都不能在那里使用。
您可以有一個工廠函數來查看管理參數并實例化適當的數據庫對象并返回它,但我認為我什至不明白您為什么要為此煩惱。
只需讓每個客戶端實例化適當的數據庫對象。如果有任何公共代碼,您可以讓兩個實現都從一個公共基類繼承,并將公共代碼放在基類中。
對!我忘了提,但是有一些通用代碼……例如,連接和身份驗證完全相同。您是否碰巧知道任何非常適合此用例的設計模式?我應該研究工廠嗎?
我認為具有繼承的通用基類可以解決這里的問題。它為您提供了一個放置公共代碼的自然位置,而不必在客戶端實現中包含服務器端代碼。瀏覽器實現和服務器實現都是一個子類,只存在于它們各自的平臺上。公共基類將在兩個地方都存在和使用。
您只需讓客戶端實例化適當的葉類,共享代碼位于基類中。如果要隱藏實際的類構造函數,可以使用工廠函數(它只是一個簡單的函數,它查看條件并為您創建適當的對象并返回它),但我不確定是否有任何令人信服的理由使用這里的工廠功能。您只會在它所針對的平臺上包含適當的葉類,因此沒有地方可以在同一代碼中使用其中一個或另一個。

TA貢獻2021條經驗 獲得超8個贊
你會考慮只有“用戶”嗎?那么每個用戶都可以有一個“角色”,可以是“用戶”或“管理員”。因此,基于該“角色”,您將為每個用戶定義權限。我發現這種解決方案更容易解決這類問題,但如果它不符合您的情況,請告訴我。
添加回答
舉報