訪問者模式 Visitor Pattern

2021-08-05 19:12:13 字數 1897 閱讀 4282

表示乙個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素類的前提下定義作用於這些元素的新操作。

組成:

1.visitor 抽象訪問者角色,為該物件結構中具體元素角色宣告乙個訪問操作介面。該操作介面的名字和引數標識了傳送訪問請求給具體訪問者的具體元素角色,這樣訪問者就可以通過該元素角色的特定介面直接訪問它。

2.concretevisitor.具體訪問者角色,實現visitor宣告的介面。

3.element 定義乙個接受訪問操作(accept()),它以乙個訪問者(visitor)作為引數。

4.concreteelement 具體元素,實現了抽象元素(element)所定義的接受操作介面。

5.objectstructure 結構物件角色,這是使用訪問者模式必備的角色。它具備以下特性:能列舉它的元素;可以提供乙個高層介面以允許訪問者訪問它的元素;如有需要,可以設計成乙個復合物件或者乙個聚集(如乙個列表或無序集合)。

定義乙個元素的介面:

public

inte***ce computerpart

擴充套件了元素介面的實體類:

public

class

keyboard

implements

computerpart

}

public

class

monitor

implements

computerpart

}

public

class

mouse

implements

computerpart

}

建立結構物件角色:

public

class

computer

implements

computerpart ;

} @override

public

void

accept(computerpartvisitor computerpartvisitor)

computerpartvisitor.visit(this);

}}

定義乙個訪問者的介面:

public

inte***ce computerpartvisitor

實現了上述訪問者介面的實體訪問者:

public

class

computerpartdisplayvisitor

implements

computerpartvisitor

@override

public

void

visit(mouse mouse)

@override

public

void

visit(keyboard keyboard)

@override

public

void

visit(monitor monitor)

}

使用 computerpartdisplayvisitor 來顯示 computer 的組成部分:

public

class visitorpatterndemo

}

輸出:

displaying mouse.

displaying keyboard.

displaying monitor.

displaying computer.

訪問者模式

訪問者模式 visitor pattern 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。一 問題 集合是大多數的系統都要處理的一種容器物件,它儲存了對其它物件的引用。一般情況下,在集合上採取的...

訪問者模式

行為模式中的訪問者模式 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作,一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。動機 類層次結構中可能經常由於引入新的操作,從而將型別變得脆弱。在軟體構建過程中,由於需求的改變,某些類層次結構中常常需要增...

訪問者模式

1.說明 namespace visitorspattern 象棋類 public abstract class chess public class redchess chess public class blackchess chess 在贏的情況下的狀態 public class win ac...