2014-05-24 49 views
0

這是一個設計問題。在BL和GUI之間共享對象的最佳做法

考慮一個遊戲,其中邏輯& GUI層是分開的。 邏輯層包含一個播放器類來表示播放器:播放器名稱等數據,獲取點數的方法,以及設置該數量的方法)

問題如下:我會就像GUI層能夠重用這個類一樣,這意味着 - 在一個事件中從邏輯層接收玩家(以便它能夠訪問玩家的名字並獲得點數) 但我不喜歡不希望GUI層能夠設置玩家的積分

這是一個有效的擔憂嗎?

當前設計有沒有問題,我沒有注意到?

有沒有解決我的問題?

+0

你聽說MVVM或MVC模式? – user3596113

+0

看起來你正在考慮關於DTO(數據傳輸對象),可能是......想法是,你有一個簡單的結構來描述玩家在層之間傳遞,作爲另一個類中的方法的參數來處理它。 DTO本身什麼都不做/很少。它當然不會顯示或堅持自己 –

+0

託尼,DTO是這樣做的最佳做法?取決於項目,它可能需要很多這樣的對象,並且即使我們有單個對象,也需要在添加新字段時進行維護,因此需要在兩個位置都進行更新。有沒有替代這種開銷? –

回答

0

我用一個例子來說明:

BL: 
public class Player 
{ 
    public string Name {get;set;} 
    public int Point {get; private set;} 

    ... 
    some functions that can change point 
}