簡單了解訪問者模式

2021-10-06 07:37:58 字數 1531 閱讀 6217

定義元素介面

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)

}

注意,這裡的訪問者與被訪問者,可以是單向委託,也可以是雙向委託的關係。

當vist需要get被觀察者的元素進行某些操作時,則會構成雙向委託。

這裡簡單的例子為單向委託。

使用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...