設計模式之禪 訪問者模式

2021-08-14 13:07:13 字數 476 閱讀 8995

類圖有了,先按照類圖來實現一下吧!

結果出來了,不過有點問題

各個部門的級別不同,管理的人眼也就不同,沒有必要都把所有的人員的資訊都看一遍

這個報表可能會改,展現形式也有可能改變--按照開閉原則,report方法已經寫死,不太符合,子類不能自行修改

遇到問題就改唄,先從設計圖紙下手

類圖改好了,如何能為每個子類訂製報表的方法呢?report方法是否可以提取到另外乙個類visitor中來實現,繼續修改類圖

兩個子類的report方法都不需要了,感覺把方法委託出去了一樣,但這與委託相去甚遠,詳細類圖繼續改造

在抽象類employee類中增加了乙個accept方法,該方法是乙個抽象方法,由子類實現,其意義就是說我這類可以允許誰可以訪問。在具體的實現類中呼叫訪問者的方法

首先看看ivisitor這個類,它是可以控制報**式的,而其他類都不用修改【spring中的介面注入】

多個訪問者:展示表+彙總表

設計模式之禪筆記5 訪問者模式

定義 封裝一些作用於某種資料結構的各元素的操作。它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。角色 1.visitor抽象訪問者 宣告訪問者可以訪問哪些元素,具體到程式中就是visit方法的引數定義哪些物件是可以被訪問的。2.concretevisitor 具體訪問者。3.elemen...

設計模式之訪問者模式

先看一下下面這段 class person public string getaction public void setaction string action public void getconclusion else if action exciting else if action gri...

設計模式之訪問者模式

我們去銀行櫃檯辦業務,一般情況下會開幾個個人業務櫃檯的,你去其中任何乙個櫃檯辦理都是可以的。我們的訪問者模式可以很好付諸在這個場景中 對於銀行櫃檯來說,他們是不用變化的,就是說今天和明天提供個人業務的櫃檯是不需要有變化的。而我們作為訪問者,今天來銀行可能是取消費流水,明天來銀行可能是去辦理手機銀行業...