定義:
目的時封裝一些施加於某些資料結構元素之上的操作,一但這些操作需要修改,接受這些操作的資料結構則可以保持不變。
角色:抽象訪問者:定義cpu和硬碟的訪問(屬性)
具體訪問者:實現訪問 硬體型別和執行
抽象元素:定義硬體型號,運轉,訪問 引數(抽象訪問者)
具體元素:實現cpu和硬碟的抽象方法
結構物件:電腦,例項化cup和硬碟物件,定義訪問方法 引數(抽象訪問者)
優點:訪問者模式使得增加新的操作變得很容易,增加新的操作只需要增加新的訪問類。
將有關行為集中到乙個訪問者物件
累積狀態
缺點:增加新元素變得很困難
破壞封裝
違背了依賴倒置原則
場景:業務需要遍歷多個不同物件
需要乙個物件結構中的物件進行很多不相關的操作,避免操作汙染類
例項:訪問電腦的硬體
package 訪問者模式;
public abstract class hardware
public hardware(string name)
public abstract void run();
public abstract void accept(computervisitor computervisitor); //訪問
}
package 訪問者模式;
public class cpu extends hardware
@override
public void run()
@override
public void accept(computervisitor computervisitor)
}
package 訪問者模式;
public class harddisk extends hardware
@override
public void run()
@override
public void accept(computervisitor computervisitor)
}
package 訪問者模式;
public inte***ce computervisitor
package 訪問者模式;
public class type implements computervisitor
@override
public void vistharddisk(harddisk harddisk)
}
package 訪問者模式;
public class run implements computervisitor
@override
public void vistharddisk(harddisk harddisk)
}
package 訪問者模式;
public class computer
public void accept(computervisitor computervisitor)
}
package 訪問者模式;
public class main
}
cpu型號:inter i7硬碟型號:wd~500g
---------
cpu正在執行
硬碟正在執行
行為型模式 訪問者模式
在訪問者模式 visitor pattern 中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。主要將資料結構與資料操作分離。...
行為型模式 訪問者模式
在訪問者模式 visitor pattern 中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。意圖 主要將資料結構與資料操作...
行為型模式 訪問者模式
訪問者模式 visitor pattern 提供乙個作用於某物件結構中的各元素的操作表示,它使我們可以在不改變各元素的類的前提下定義作用於這些元素的新操作。訪問者模式是一種物件行為型模式。abstract class visitor class concretevisitor extends vis...