類圖有了,先按照類圖來實現一下吧!
結果出來了,不過有點問題
各個部門的級別不同,管理的人眼也就不同,沒有必要都把所有的人員的資訊都看一遍
這個報表可能會改,展現形式也有可能改變--按照開閉原則,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...
設計模式之訪問者模式
我們去銀行櫃檯辦業務,一般情況下會開幾個個人業務櫃檯的,你去其中任何乙個櫃檯辦理都是可以的。我們的訪問者模式可以很好付諸在這個場景中 對於銀行櫃檯來說,他們是不用變化的,就是說今天和明天提供個人業務的櫃檯是不需要有變化的。而我們作為訪問者,今天來銀行可能是取消費流水,明天來銀行可能是去辦理手機銀行業...