使用這兩種技術有什麼重大的好處嗎?萬一有變型中,訪問者模式我的意思是這樣的:http://en.wikipedia.org/wiki/Visitor_patternVisitor Pattern可以用回調函數替換嗎?
而下面是使用委託來達到同樣的效果(至少我認爲它是一致的)
說有的一個例子嵌套元素的集合:學校都包含有學生
而不是使用訪問者模式來執行每個收集項目什麼部門,爲什麼不使用一個簡單的回調(在C#Action委託)
說這句話
class Department
{
List Students;
}
class School
{
List Departments;
VisitStudents(Action<Student> actionDelegate)
{
foreach(var dep in this.Departments)
{
foreach(var stu in dep.Students)
{
actionDelegate(stu);
}
}
}
}
School A = new School();
...//populate collections
A.Visit((student)=> { ...Do Something with student... });
*與委託接收多種PARAMS
說我想通過學生和部門都EDIT例如,我可以修改的操作定義,像這樣: 行動
class School
{
List Departments;
VisitStudents(Action<Student, Department> actionDelegate, Action<Department> d2)
{
foreach(var dep in this.Departments)
{
d2(dep); //This performs a different process.
//Using Visitor pattern would avoid having to keep adding new delegates.
//This looks like the main benefit so far
foreach(var stu in dep.Students)
{
actionDelegate(stu, dep);
}
}
}
}
我覺得這種風格很吸引人。儘管如此,有些人會爭先恐後地堅持自己的語法重型設計模式。 – ChaosPandion