第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

使用Java中的Swing在GUI開發(fā)中正確實(shí)現(xiàn)MVC模式

使用Java中的Swing在GUI開發(fā)中正確實(shí)現(xiàn)MVC模式

一只斗牛犬 2019-09-03 19:41:52
首先,我來自MVC的大背景,當(dāng)我開始使用PHP時(shí),我瀏覽了很多次,嘗試用PHP完善我的MVC-Like設(shè)計(jì)。很多人都喜歡回答了很多幫助我的答案。但是在Swing中開始GUI開發(fā)之后,關(guān)于Swing中MVC的答案是完全不同的。例如,模型也是一種觀點(diǎn)?根據(jù)Oracle的建議 TextElementModel在這里沒有任何邏輯業(yè)務(wù),它所做的只是標(biāo)記(設(shè)置顏色等)和設(shè)置數(shù)據(jù),如設(shè)置文本等。當(dāng)我用PHP開發(fā)時(shí),沒有這樣的事情,AbstractModel因?yàn)槲铱偸潜桓嬷P筒皇且粋€(gè)類,或者更多,它是一個(gè)處理邏輯業(yè)務(wù)的整個(gè)層。在PHP中,我使用了服務(wù),數(shù)據(jù)映射器和域?qū)ο?,這個(gè)驚人的答案提示我在PHP中幫助了我:如何在MVC中構(gòu)建模型?我的嘗試再次閱讀之后,我想在Java中做一個(gè)類似的事情:我有ControllerContainer創(chuàng)建所有控制器:public class ControllerContainer {    private JFrame frame;    public ControllerContainer(JFrame rune) {        this.frame = frame;    }    public void initControllers() {        Atest test = new Atest(frame);        test.registerView("test", new ViewTest(test));    }}如您所見,我將帶有實(shí)例的名為“test”的視圖添加ViewTest到控制器中,現(xiàn)在它將在框架中可見,并且可以接受輸入。我的Controller班級,應(yīng)該是抽象的,但我還沒有把它抽象化:public class Controller {    private JFrame frame;    private Map<String, Component> views = new HashMap<String, Component>();    public Controller(JFrame frame) {        this.frame = frame;    }    protected void registerView(String title, Component c) {        this.views.put(title, c);        this.frame.add(c);    }    protected void deregisterView(String title) {        this.frame.remove(this.views.get(title));        this.views.remove(title);    }    protected Component getView(String title) {        return this.views.get(title);    }}還有一個(gè)測試控制器:public class Atest extends Controller {    public Atest(JFrame frame) {        super(frame);    }    public void hit() {        ((ViewTest) super.getView("test")).changeColorBlue();    }}問題如您所見,我的視圖創(chuàng)建了一個(gè)新按鈕,并為其添加了一個(gè)鼠標(biāo)偵聽器。監(jiān)聽器將有權(quán)訪問控制器以傳遞輸入??刂破鳙@取輸入并更改視圖。基本上,控制器立即被迫更新視圖,沒有任何嚴(yán)肅的邏輯業(yè)務(wù),因?yàn)樵谖业那闆r下不需要它。根據(jù)我上面發(fā)布的鏈接,tere?ko回答,我如何正確使用他的想法和Java Swing的建議?在PHP背景之后,我真的很困惑。也許我是誤解,一切都應(yīng)該用不同的語言做不同的事情?但我認(rèn)為模式應(yīng)該始終以相同的方式實(shí)現(xiàn)。如果您需要更多信息,請告訴我們。
查看完整描述

3 回答

?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

因此,如果我創(chuàng)建一個(gè)MVC程序,其中Model是一個(gè)將AVI轉(zhuǎn)換為MP4的視頻庫,并且我在其上放置了一個(gè)視圖并且它工作得很好。后來我想分發(fā)轉(zhuǎn)換器庫,所以有人想創(chuàng)建自己的視頻轉(zhuǎn)換器軟件,但太糟糕了,因?yàn)樵搸烊Q于視圖!所以這就是為什么第一種模式非常糟糕,需要一種特殊的才能來設(shè)計(jì)那種糟糕的模式。

查看完整回答
反對 回復(fù) 2019-09-03
  • 3 回答
  • 0 關(guān)注
  • 943 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號