我已經打了一段時間做MVC與wxPython的,我知道你的意思是訂閱協議是什麼全球。
我想出的最新想法是每個視圖和模型都有自己的觀察者。 觀察者對其處理程序的引用很弱,並且它們都在單獨的線程中工作,以便不阻止GUI。要回調GUI線程我正在使用wxAnyThread Gui方法裝飾器。
有3種類型的信號發送,因爲您可以設置哪些模型可以觀察哪些屬性,當它們被更改時它們會自動發出信號。那麼在模型和視圖上都可以發送消息信號或關鍵字信號。三種信號類型中的每一種都必須在每個視圖或模型中是唯一的,因爲它們被用來製作識別它們的元組。
模型屬性當您綁定到該處理器的屬性它馬上調用其當前值的處理程序,然後繼續觀察變化的方法
控制器處理程序以
@onAttr('attributeName')
def onModelAttributeName(self, attributeName)
裝飾。
發送消息
使用方法
view/model.notify('Your message'):
控制器回調裝飾有
@onNotify('Your message')
def onYourMessage(self):
發送關鍵字
使用
view/model.notifyKw(valid=True, value='this)
控制器回調裝飾有
@onNotifyKw('valid', 'value')
def onValidValueKw(self, valid, value)
的GUI留一無所知有關的模型,你添加到GUI的唯一事情就是認爲信號裝置的方法,控制器重視它自我這個,所以如果你不添加一個控制器,視圖會很高興地將消息發送給任何人。
我已經上傳了我迄今爲止在github
https://github.com/Yoriz/Y_Signal
https://github.com/Yoriz/Y_Mvc
兩個有單元測試應該給一點它做什麼的例子,但我將創建一些wxpython的例子。
我正在使用python版本2.7和Ysignals模塊要求 https://pypi.python.org/pypi/futures/2.1.3的線程。 請看看生病對某人認爲接近mvc的方式感興趣,或者指出我認真忽略的一些東西。