亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

利用MVC模式開發Java應用程序

2019-11-18 12:44:13
字體:
來源:轉載
供稿:網友

  利用MVC模式開發java應用程序
  
  作者:◇ 龔赤兵 本文選自:開放系統世界 2003年06月06日
  
  Java是一種面向對象的語言,是實現面向對象編程的強大工具。我們在實際編程中,應該運用并發揮其最大效能。但是,要利用面向對象編程思想,自己獨立開發出好的Java應用程序,非凡是大、中型程序,并不是一件簡單的事情。正是基于面向對象編程思想,人們將實際中的各種應用程序,進行了大量的分析、總結,從而歸納出許多標準的設計模式。將這些設計模式合理地運用到自己的實際項目中,可以最大限度地減少開發過程中出現的設計上的問題,確保項目高質量的如期完成。
  
  MVC模式介紹
  
  模型-視圖-控制器(Model-View-Controller,MVC)模式就是為那些需要為同樣的數據提供多個視圖的應用程序而設計的。它很好地實現了數據層與表示層的分離,非凡適用于開發與用戶圖形界面有關的應用程序,其示意圖見圖1。模式中基本結構定義為:
  
  控制器 用來處理用戶命令以及程序事件的;
  
  模型 維護數據并提供數據訪問方法;
  
  視圖 數據的顯示。
  
  MVC模式基本實現過程為:
  
  1. 控制器(如Java中的main程序入口)要新建模型;
  
  2. 控制器要新建一個或多個視圖對象,并將它們與模型相關聯;
  
  3. 控制器改變模型的狀態;
  
  4. 當模型的狀態改變時,模型將會自動刷新與之相關的視圖。
   利用MVC模式開發Java應用程序(圖一)
  圖1 MVC模式基本結構
  
  本文要實現的Java應用程序是當用戶在圖形化用戶界面輸入一個球體的半徑時,程序將顯示該球體的體積與表面積。我們首先利用基本MVC模式實現以上程序,然后利用不同數量的模型、視圖、控制器結構來擴展該程序。
  
  基本MVC模式
  
  該程序主要由三個類構成,分別為Sphere類、TextView類及SphereWindow類。其中Sphere類扮演Model的角色,TextView類為View角色,SphereWindow類為Controller角色。
  
  Java通過專門的類Observable及Observer接口來實現MVC編程模式。其UML類圖及MVC模式的實現方式見圖2。
   利用MVC模式開發Java應用程序(圖二)
  圖2 MVC模式的UML類圖
  
  從圖2中可以看出,Model類必須繼續Observable類,View類必須實現接口Observer。正是由于實現了上述結構,當模型發生改變時(當控制器改變模型的狀態),模型就會自動刷新與之相關的視圖。其UML序列圖可以表示為圖3。
  
  Model類Sphere,必須擴展Observable類,因為在Observable類中,方法addObserver()將視圖與模型相關聯,當模型狀態改變時,通過方法notifyObservers()通知視圖。其中實現MVC模式的要害代碼為:
  
  
  
  import java.util.Observable;
  
  class Sphere extends Observable
  
  {
  
  ....
  
  public void setRadius(double r)
  
  {
  
  myRadius = r;
  
  setChanged(); // Indicates that the model has changed
  
  notifyObservers();
  
  }
  
  ....
  
  }
   利用MVC模式開發Java應用程序(圖三)
  圖3 MVC模式的UML序列圖
  
  View類的角色TextView類必須實現接口Observer,這意味著類TextView必須是implements Observe,另外還需實現其中的方法update()。有了這個方法,當模型Sphere類的狀態發生改變時,與模型相關聯的視圖中的update()方法就會自動被調用,從而實現視圖的自動刷新。View類的要害代碼如下:
  
  
  
  import java.util.Observer;
  
  import java.util.Observable;
  
  public class TextView extends JPanel implements Observer
  
  {
  
  ......
  
  public void update(Observable o, Object arg)
  
  {
  
  Sphere balloon = (Sphere)o;
  
  radiusIn.setText(“ ”+f3.format(balloon.getRadius()));
  
  volumeOut.setText(“ ”+f3.format(balloon.volume()));
  
  surfAreaOut.setText(“ ” + f3.format(balloon.surfaceArea()));
  
  }
  
  ......
  
  }
  
  
  
  SphereWindow類作為Controller,它主要新建Model與View,將view與Model相關聯,并處理事件,其中的要害代碼為:
  
  
  
  public SphereWindow()
  
  {
  
  super(“Spheres: volume and surface area”);
  
  model = new Sphere(0, 0, 100);
  
  TextView view = new TextView();
  
  model.addObserver(view);
  
  view.update(model, null);
  
  view.addActionListener(this);
  
  Container c = getContentPane();
  
  c.add(view);
  
  }
  
  public void actionPerformed(ActionEvent e)
  
  {
  
  JTextField t = (JTextField)e.getSource();
  
  double r = Double.parseDouble(t.getText());
  
  model.setRadius(r);
  
  }
  
  
  
  該程序是通過Java中的MVC模式編寫的,具有極其良好的可擴展性。它可以輕松實現以下功能:
  
  1. 實現一個模型的多個視圖;
  
  2. 采用多個控制器;
  
  3. 當模型改變時,所有視圖將自動刷新;
  
  4. 所有的控制器將相互獨立工作。
  
  這就是Java編程模式的好處,只需在以前的程序上稍作修改或增加新的類,即可輕松增加許多程序功能。以前開發的許多類可以重用,而程序結構根本不再需要改變,各類之間相互獨立,便于團體開發,提高開發效率。
  
  一個模型、兩個視圖和一個控制器
  
  下面我們討論如何實現一個模型、兩個視圖和一個控制器的程序。當用戶在圖形化用戶界面輸入一個球體的半徑,程序除顯示該球體的體積與表面積外,還將圖形化顯示該球體。該程序的4個類之間的示意圖可見圖4。
   利用MVC模式開發Java應用程序(圖四)
  圖4一個模型、兩個視圖和一個控制器的基本結構
  
  其中Model類及View1類根本不需要改變,與前面的完全一樣,這就是面向對象編程的好處。對于Controller中的SphereWindows類,只需要增加另一個視圖,并與Model發生關聯即可。其要害實現代碼為:
  
  
  
  public SphereWindow()
  
  {
  
  super(“Spheres: volume and surface area”);
  
  model = new Sphere(0, 0, 100);
  
  TextView tView = new TextView();
  
  model.addObserver(tView);
  
  tView.addActionListener(this);
  
  tView.update(model, null);
  
  GraphicsView gView = new GraphicsView();
  
  model.addObserver(gView);
  
  gView.update(model, null);
  
  Container c = getContentPane();
  
  c.setLayout(new GridLayout(1, 2));
  
  c.add(tView);
  
  c.add(gView);
  
  }
  
  
  
  其程序輸出結果見圖5。
  
   利用MVC模式開發Java應用程序(圖五)
  圖5 輸出結果
  
  一個模型、兩個視圖和兩個控制器
  
  在上面的程序中,我們只能通過鍵盤輸入球體半徑,現在我們修改以上程序,利用鼠標放大、縮小右邊的球體圖形及可改變球體的半徑,從而獲得球體半徑的輸入。
  
  此時的MCV模式為一個模型、兩個視圖和兩個控制器,其結構可以見圖6,其UML類圖可以表示為圖7。
  
  其中Sphere、TextView與GraphicsView類與前面完全一樣。在主程序SphereWindows中,該類這時不是直接作為Controller,它控制Controller1與Controller2的新建。該程序的要害代碼為:
  
  
  
  public SphereWindow()
  
  {
  
  super(“Spheres: volume and surface area”);
  
  Sphere model = new Sphere(0, 0, 100);
  
  TextController tController = new TextController(model);
  
  GraphicsController gController = new GraphicsController(model);
  
  Container c = getContentPane();
  
  c.setLayout(new GridLayout(1, 2));
  
  c.add(tController.getView());
  
  c.add(gController.getView());
  
  }
   利用MVC模式開發Java應用程序(圖六)
  圖6一個模型、兩個視圖和兩個控制器的基本結構
  利用MVC模式開發Java應用程序(圖七)
  
  圖7 一個模型、兩個視圖和兩個控制器的UML類圖
  
  當程序SphereWindow運行時,將鼠標移動到球體的外圓處

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
高潮白浆女日韩av免费看| 精品高清一区二区三区| 在线精品视频视频中文字幕| 日韩精品一区二区视频| 国产免费一区二区三区在线能观看| 久久久天堂国产精品女人| 一本色道久久88亚洲综合88| 日韩精品视频在线播放| 国产91精品久久久久| 亚洲二区中文字幕| 欧美理论在线观看| 日韩大片免费观看视频播放| 日韩av大片在线| 欧美一区二三区| 91在线看www| 久久伊人精品一区二区三区| 成人国产精品一区二区| 韩日欧美一区二区| 国产又爽又黄的激情精品视频| 国产97人人超碰caoprom| 中文字幕视频一区二区在线有码| 亚洲综合大片69999| 91国产中文字幕| 一本大道久久加勒比香蕉| 欧美怡春院一区二区三区| 亚洲精品美女在线| 青草青草久热精品视频在线网站| 中文字幕日韩电影| 亚洲japanese制服美女| 国产精品国内视频| 中文字幕免费精品一区高清| 国产精品视频导航| 欧美成人激情图片网| 综合国产在线观看| 精品福利樱桃av导航| 国产精品va在线| 国产精品999999| 国产综合久久久久久| 有码中文亚洲精品| 日韩欧美亚洲国产一区| 欧美日韩一区二区免费在线观看| 国产aⅴ夜夜欢一区二区三区| 久久精品小视频| 日韩一区二区av| 视频在线观看一区二区| 性欧美xxxx| 亚洲欧美在线免费观看| 欧美日韩国产成人| 国产91在线高潮白浆在线观看| 北条麻妃在线一区二区| 久久久久五月天| 国产精品久久久999| 亚洲一区中文字幕在线观看| 成人黄色免费片| 欧美黑人性猛交| 国产欧美中文字幕| 国产一区二区三区视频在线观看| 国产91精品在线播放| 国产视频精品久久久| 91干在线观看| 欧美日韩一二三四五区| 久久国产精品久久国产精品| 国产精品视频色| 国自在线精品视频| 久久国产精品免费视频| 欧美精品生活片| 国产97在线观看| 国产z一区二区三区| 欧美性猛交xxxx免费看久久久| 日韩视频免费在线| 亚洲国产日韩欧美在线动漫| 亚洲欧美一区二区三区久久| 最近2019中文字幕在线高清| 91在线直播亚洲| 欧美在线视频网| 亚洲色图欧美制服丝袜另类第一页| 久久婷婷国产麻豆91天堂| 久久久精品2019中文字幕神马| 欧美激情videos| 中文字幕一区二区三区电影| 亚洲国产中文字幕久久网| 亚洲国产精品成人精品| 91精品在线看| 成人做爰www免费看视频网站| 亚洲一区二区三区视频播放| 日韩欧美在线免费观看| 91香蕉嫩草神马影院在线观看| 51精品国产黑色丝袜高跟鞋| 色偷偷av一区二区三区乱| 亚洲综合在线播放| 91精品国产91久久久久久吃药| 欧美一级电影免费在线观看| 日韩av在线导航| 国产视频丨精品|在线观看| 91po在线观看91精品国产性色| 欧美日韩色婷婷| 国产精品亚洲自拍| 色综合91久久精品中文字幕| 成人国产亚洲精品a区天堂华泰| 热99精品只有里视频精品| 国产精品久久久久久久7电影| 亚洲欧美精品一区二区| 久久久久久国产精品| 亚洲热线99精品视频| 在线电影欧美日韩一区二区私密| 久久久久久久久国产精品| 欧美亚洲第一页| 日本精品视频在线观看| 国产亚洲精品va在线观看| 国产日韩精品一区二区| 69国产精品成人在线播放| 亚洲人成77777在线观看网| 日韩黄色高清视频| 国产69精品99久久久久久宅男| 国产精品视频午夜| 一本一本久久a久久精品综合小说| 欧美成人一二三| 日韩av理论片| 国产suv精品一区二区三区88区| 欧美日韩黄色大片| 精品国产区一区二区三区在线观看| 亚洲国产精品国自产拍av秋霞| 一区二区av在线| 高清亚洲成在人网站天堂| 日韩精品一区二区视频| 91久热免费在线视频| 欧美日韩另类在线| 成人自拍性视频| 亚洲综合中文字幕在线| 国产精品99久久久久久人| 久久视频免费在线播放| 国产欧美日韩中文| 久久免费精品视频| 国产精品xxxxx| 日本亚洲欧洲色α| 国产精品福利在线观看| 亚洲二区在线播放视频| 国产欧美一区二区三区久久| 日韩国产精品亚洲а∨天堂免| 亚洲成人黄色网址| 亚洲视频欧洲视频| 在线视频中文亚洲| 亚洲无亚洲人成网站77777| 成人久久18免费网站图片| 欧美劲爆第一页| 91精品国产99久久久久久| 欧美理论电影在线播放| 日韩av黄色在线观看| 国产精品96久久久久久又黄又硬| 日韩中文av在线| 日韩中文字幕在线视频播放| 国内精品久久影院| 国产日韩欧美成人| 欧美大片在线看| 国产美女主播一区| 亚洲免费高清视频| 久久69精品久久久久久久电影好| 亚洲欧美在线看| 亚洲人成伊人成综合网久久久| 日韩欧美精品网站| 欧美成年人视频网站欧美| 久久久成人的性感天堂| 不用播放器成人网| 日韩高清av一区二区三区|