2012-10-29 38 views
2

有方法的角色包含實際的算法,但上下文執行方法應執行什麼操作,但執行其中一種方法?DCI上下文的責任?

public class SomeContext 
{ 
    // ... Constructor omitted ... 

    public void Execute() 
    { 
     // Is this all? 
     someRole.DoStuff(this.anotherRole, this.otherData); 
    } 
} 

這看起來很簡單,所以我在想,背景中應該負責的,例如數據庫查詢。這不會簡化有效的角色嗎?

回答

3

上下文的主要職責是將角色綁定到對象。有時候一個或多個「執行」方法會很複雜,但通常不會。 他們在那裏捕捉對象之間的交互

角色與對象的綁定是原子的。它發生在上下文中的一個位置,同時發生在所有角色上。

+0

因此,使用文本字符串(如搜索查詢)實例化上下文,讓它使用ORM查找域對象並將它們傳遞給Role方法,這是它應該承擔的責任? – ciscoheat

+0

當然也可能有其他構造函數,所以可以將RolePlayers傳遞給上下文。 (Execute方法將測試對象是否存在,因此構造函數中沒有任何工作) – ciscoheat

+0

@ciscoheat上下文通過ORM查找角色扮演者是非常合理的。但是,您不會將RolePlayers傳遞給角色方法。 RolePlayer的角色方法就像任何其他對象上的實例方法。所以someRolePlayer.ARoleMethod()是你將如何調用它而不是ARoleMethod(someRolePLayer); –