訪問者模式表示乙個作用於某物件結構中的各元素的操作,它使你可以在不改變類的前提下定義作用於這些元素的操作。
訪問者模式的目的是要把處理從資料結構分離出來。很多系統可以按照演算法和資料結構分開,如果這樣的系統有比較穩定的資料結構,又有易於變化的演算法的話,使用訪問者模式就是比較合適的。
uml圖如下:
**如下:
class action
virtual ~action() {}
virtual
void getmanconclusion(man* __m) {}
virtual
void getwomanconclusion(woman* __w) {}
};
class
amativeness : public
action
~amativeness() {}
virtual
void
getmanconclusion(man* __m)
virtual
void
getwomanconclusion(woman* __w)
};
class
failing : public
action
~failing() {}
virtual
void
getmanconclusion(man* __m)
virtual
void
getwomanconclusion(woman* __w)
};
class
success : public
action
~success() {}
virtual
void
getmanconclusion(man* __m)
virtual
void
getwomanconclusion(woman* __w)
};
class person
virtual ~person() {}
virtual
void accept(action* visitor)
};
class woman : public person
~woman() {}
virtual
void accept(action* visitor)
};
class man : public person
~man() {}
virtual
void accept(action* visitor)
};
class objectstructure
~objectstructure()
void attach(person* __p)
void detach(person* __p)
void display(action* vistor)}};
//客戶端**
objectstructure obj;
person* pman = new man();
person* pwoman = new woman();
obj.attach(pman);
obj.attach(pwoman);
action* psuc = new success();
obj.display(psuc);
action* pfail = new failing();
obj.display(pfail);
action* pamative = new amativeness();
obj.display(pamative);
執行結果如下:
設計模式之訪問者模式
先看一下下面這段 class person public string getaction public void setaction string action public void getconclusion else if action exciting else if action gri...
設計模式之訪問者模式
我們去銀行櫃檯辦業務,一般情況下會開幾個個人業務櫃檯的,你去其中任何乙個櫃檯辦理都是可以的。我們的訪問者模式可以很好付諸在這個場景中 對於銀行櫃檯來說,他們是不用變化的,就是說今天和明天提供個人業務的櫃檯是不需要有變化的。而我們作為訪問者,今天來銀行可能是取消費流水,明天來銀行可能是去辦理手機銀行業...
設計模式之訪問者模式
定義 表示一介作用於某個物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。結構圖 示例 public inte ce vistor public class concretevisitor1 implements vistor override public ...