設計模式(JAVA) 訪問者模式

2021-06-13 20:15:03 字數 1963 閱讀 3239

場景:將公司中所有人員資訊都列印匯報出來,其中假設公司有兩類人員:

1.普通員工

2.管理層

不同人員型別的資訊是不同的。

訪問者模式:

定義:封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。

包含如下幾個角色:

1.visitor-抽象訪問者

抽象類或者介面,宣告訪問者可以訪問哪些元素,具體到程式中就是visit方法的引數定義哪些物件是可以被訪問,利用了多型的性質

2.concretevisitor-具體訪問者

它影響訪問者訪問到乙個類後該怎麼幹,要做什麼事。

3.element-抽象元素

介面或者抽象類,宣告接受哪一類訪問者訪問,程式上市通過accept方法中的引數來定義的

4.concreteelement-具體元素

實現accept方法,通常是visitor.visit(this)。

5.objectstruture-結構物件

元素產生者,一般在多個不同類中。

場景問題解決類圖:

主要涉及如下幾個角色:

1.抽象員工

2.普通員工

3.管理階層

4.訪問者介面

5.訪問者實現

6.場景類

**實現:

employee:

public abstract class employee 

public void setname(string name)

public int getsalary()

public void setsalary(int salary)

public string get***()

public void set***(string string)

public abstract void accept(ivisitor visitor);

}

commonemployee:

private string job;

public string getjob()

public void setjob(string job)

public void accept(ivisitor visitor)

}

manager:

public class manager extends employee 

public void setperformance(string performance)

public void accept(ivisitor visitor)

}

ivisitor:

public inte***ce ivisitor
visitor:

public class visitor implements ivisitor 

public void visit(manager manager)

private string getbasicinfo(employee employee)

private string getmanagerinfo(manager manager)

private string getcommonemployeeinfo(commonemployee commonemployee)

}

client:

public class client 

}public static listmockemployee()

}

Java設計模式 訪問者模式

訪問者模式 visitor pattern 以列印公司員工的資訊報表為例。下面先看下類圖。使用了乙個模版方法模式,把所要的資訊都列印出來。這樣子寫出來的 就不太符合公司不同管理層的需要,不能滿足各自的需求。每個普通員工類和經理類都乙個方法 report,那是否可以把這個方法提取到另外乙個類中來實現呢...

JAVA設計模式 訪問者模式

訪問者模式一般被使用者一些資料結構穩定的場合,資料物件穩定,而實際對它的操作是不穩定的,他可以接受不同的物件而做出不同的反應,對與穩定的資料結構,它的功能和方法也就穩定,所以就把它抽象出來,抽取出來,而對於訪問它的物件是經常改變的,傳遞不同的實際物件也就得到不同的執行效果,多型的體現 訪問者模式的參...

Java設計模式 訪問者模式

定義 封裝某些作用於某種資料結構中各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。class a public void method2 b b class b 看一下在類a中,方法method1和方法method2的區別在 方法method1很簡單,就是列印出一句 我是a...