java 設計模式 訪問者模式

2021-09-24 09:17:05 字數 1617 閱讀 3840

學習路徑:

public

static

void

main

(string[

] args)

}}

/**

* 課程抽象類

*/public

abstract

class

course

public

void

setname

(string name)

/** * 定義應用層方法,每個子類自己改寫,入參是訪問者

* @param visitor

*/public

abstract

void

accept

(visitor visitor)

;}

/**

* 抽象課程的子類

*/public

class

freecourse

extends

course

/** * 核心方法:

* 傳入visitor物件,

* 內部呼叫visitor物件的visit方法,引數為呼叫者(自己)

* 該方法聯絡了訪問者和課程的兩個抽象物件

* @param visitor 訪問者

*/@override

public

void

accept

(visitor visitor)

}

/**

* 訪問者介面,訪問不同的課程有不同的行為。

* 該模式下,盡量確定被訪問者的數量,不然拓展介面實現會造成大量**修改

*/public

inte***ce

visitor

/**

* 實現訪問者介面,自定義訪問者訪問不同課程的業務邏輯

* 如果要新增乙個訪問者,新增乙個類即可

*/public

class

studentvisitor

implements

visitor

@override

public

void

visit

(freecourse freecourse)

}

應用層的一段**,可以修改主被動關係

for

(visitor visitor : visitorarraylist)

}

其中course.accept(visitor);可以改為visitor.visit(course);,但是需要修改介面實現

/**

* 不同的訪問者,有不同的行為

*/public

inte***ce

visitor

else

if(course instanceof

freecourse

)else

}}

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

場景 將公司中所有人員資訊都列印匯報出來,其中假設公司有兩類人員 1.普通員工 2.管理層 不同人員型別的資訊是不同的。訪問者模式 定義 封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。包含如下幾個角色 1.visitor 抽象訪問者 抽象類或...

Java設計模式 訪問者模式

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

JAVA設計模式 訪問者模式

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