关于数据同步,窗口同步之类
最近經(jīng)常遇到關(guān)于數(shù)據(jù)同步或者說(shuō)窗口同步之類(lèi)的問(wèn)題。比如在對(duì)話(huà)框A中,點(diǎn)擊按鈕之后彈出對(duì)話(huà)框B。在對(duì)話(huà)框B做了某個(gè)操作之后,對(duì)話(huà)框A想立即知道或者知道之后做出某些反應(yīng)。對(duì)于類(lèi)似這樣的問(wèn)題,一般第一反應(yīng)應(yīng)該就是想到用發(fā)消息的方式來(lái)處理,但是有時(shí)候用發(fā)消息這種方式會(huì)很麻煩,特別是這兩個(gè)對(duì)話(huà)框不在一個(gè)項(xiàng)目中,或者他們都只是很底層的一個(gè)對(duì)話(huà)框的時(shí)候。這個(gè)時(shí)候可以用C++中類(lèi)的繼承,多態(tài)來(lái)解決這個(gè)問(wèn)題。大致的思路如下:
1.定義一個(gè)抽象類(lèi)作為基類(lèi)(其實(shí)不是抽象類(lèi)也行);
1 class Base 2 { 3 virtual void event()=0; 4 }這里的事件event就是對(duì)話(huà)框A要做出的反應(yīng)
2.定義對(duì)話(huà)框A
class A:public Base {virtual void event(); }這里讓A繼承Base,并自己寫(xiě)好關(guān)于event的實(shí)現(xiàn),就是具體做出什么反應(yīng)。
3.定義對(duì)話(huà)框B
class B {void event1(Base *p); }這里將基類(lèi)Base的指針作為形參,在實(shí)際調(diào)用的時(shí)候?qū)的指針傳進(jìn)來(lái)即可。這個(gè)傳參的過(guò)程可以放到構(gòu)造函數(shù)中,也可以直接放到具體事件中。
void B::event1(Base* p) {p->event(); }這里就類(lèi)似于反饋給A了,讓A做出反應(yīng)。
轉(zhuǎn)載于:https://www.cnblogs.com/gig886/p/5028563.html
總結(jié)
以上是生活随笔為你收集整理的关于数据同步,窗口同步之类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iOS WKWebView ios9以上
- 下一篇: 转: jdbc连接数据库需要注意和出错的