java實現23種設計模式之訪問者模式

在訪問者模式(Visitor Pattern)中,咱們使用了一個訪問者類,它改變了元素類的執行算法。算法

經過這種方式,元素的執行算法能夠隨着訪問者改變而改變。這種類型的設計模式屬於行爲型模式。設計模式

根據模式,元素對象已接受訪問者對象,這樣訪問者對象就能夠處理元素對象上的操做。數據結構

假如某個學科接受訪問者訪問數據結構和算法

package com.ceshi20; public interface Subject { public void accept(Visitor visitor); public String getSubject(); }
package com.ceshi20; public class MySubject implements Subject{ @Override public void accept(Visitor visitor) { visitor.visit(this); } @Override public String getSubject() { return "化學物理"; } }
package com.ceshi20; public interface Visitor { public void visit(Subject sub); }
package com.ceshi20; public class MyVisitor implements Visitor{ @Override public void visit(Subject sub) { System.out.println("訪問課程:"+sub.getSubject()); } }
package com.ceshi20; public class Test { public static void main(String[] args) { Visitor visitor = new MyVisitor(); Subject sub = new MySubject(); sub.accept(visitor); } }

運行結果:ide

以後若是有其餘課程,新建實現類便可。this

該模式適用場景:若是咱們想爲一個現有的類增長新功能,不得不考慮幾個事情:
一、新功能會不會與現有功能出現兼容性問題?
二、之後會不會再須要添加?
三、若是類不容許修改代碼怎麼辦?
面對這些問題,最好的解決方法就是使用訪問者模式,訪問者模式適用於數據結構相對穩定的系統,把數據結構和算法解耦
相關文章
相關標籤/搜索