【設計模式】MVC 模式

MVC 模式代表 Model-View-Controller(模型-視圖-控制器) 模式。這種模式用于應用程序的分層開發。

  • Model(模型)?- 模型代表一個存取數據的對象或 JAVA POJO。它也可以帶有邏輯,在數據變化時更新控制器。
  • View(視圖)?- 視圖代表模型包含的數據的可視化。
  • Controller(控制器)?- 控制器作用于模型和視圖上。它控制數據流向模型對象,并在數據變化時更新視圖。它使視圖與模型分離開。

實現

我們將創建一個作為模型的?Student?對象。StudentView?是一個把學生詳細信息輸出到控制臺的視圖類,StudentController?是負責存儲數據到?Student?對象中的控制器類,并相應地更新視圖?StudentView

MVCPatternDemo,我們的演示類使用?StudentController?來演示 MVC 模式的用法。

MVC 模式的 UML 圖

步驟 1

創建模型。

Student.java

public class Student {private String rollNo;private String name;public String getRollNo() {return rollNo;}public void setRollNo(String rollNo) {this.rollNo = rollNo;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

步驟 2

創建視圖。

StudentView.java

public class StudentView {public void printStudentDetails(String studentName, String studentRollNo){System.out.println("Student: ");System.out.println("Name: " + studentName);System.out.println("Roll No: " + studentRollNo);}
}

步驟 3

創建控制器。

StudentController.java

public class StudentController {private Student model;private StudentView view;public StudentController(Student model, StudentView view){this.model = model;this.view = view;}public void setStudentName(String name){model.setName(name);    }public String getStudentName(){return model.getName();    }public void setStudentRollNo(String rollNo){model.setRollNo(rollNo);      }public String getStudentRollNo(){return model.getRollNo();     }public void updateView(){           view.printStudentDetails(model.getName(), model.getRollNo());}  
}

步驟 4

使用?StudentController?方法來演示 MVC 設計模式的用法。

MVCPatternDemo.java

public class MVCPatternDemo {public static void main(String[] args) {//從數據庫獲取學生記錄Student model  = retrieveStudentFromDatabase();//創建一個視圖:把學生詳細信息輸出到控制臺StudentView view = new StudentView();StudentController controller = new StudentController(model, view);controller.updateView();//更新模型數據controller.setStudentName("John");controller.updateView();}private static Student retrieveStudentFromDatabase(){Student student = new Student();student.setName("Robert");student.setRollNo("10");return student;}
}

步驟 5

執行程序,輸出結果:

Student: 
Name: Robert
Roll No: 10
Student: 
Name: John
Roll No: 10

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36579.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36579.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36579.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux6.37 Kubernetes 集群調度

文章目錄 計算機系統5G云計算第三章 LINUX Kubernetes 集群調度一、調度約束1.調度過程2.指定調度節點3.親和性1)節點親和性2)Pod 親和性3)鍵值運算關系 4.污點(Taint) 和 容忍(Tolerations)1)污點(Taint)2)容忍(Toler…

centos搭建k8s

centos搭建k8s環境_centos k8s_進擊的Coders的博客-CSDN博客

VSCODE[配置ssh免密遠程登錄]

配置ssh免密遠程登錄 本文摘錄于:https://blog.csdn.net/qq_44571245/article/details/123031276只是做學習備份之用,絕無抄襲之意,有疑惑請聯系本人! 這里要注意如下幾個地方: 1.要進入.ssh目錄創建文件: 2.是拷貝帶"ssh-…

微服務系列文章之 Springboot+Vue實現登錄注冊

一、springBoot 創建springBoot項目 分為三個包,分別為controller,service, dao以及resource目錄下的xml文件。 UserController.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 …

如何利用 EMC 模型解決能源服務提供商的瓶頸

01. 什么是合同能源管理? 合同能源管理(EMC-Energy Management Contract) 是一種新型的市場化節能機制,其實質就是以減少的能源費用來支付節能項目全部成本的節能投資方式。:節能服務公司與用能單位以契約形式約定節能項目的節能目標,節能服…

(二)Node.js 基礎模塊

(二)Node.js 基礎模塊 1. fs文件系統模塊1.1 什么是fs文件系統模塊1.2 讀取指定文件中的內容1. fs.readFile()的語法格式2. fs.readFile()的示例代碼 1.3 向指定的文件中寫入內容1. fs.writeFile()的語法格式2. fs.writeFile()的實例代碼 1.4 __dirname …

正則表達式的使用

1、正則表達式-教程 正則表達式:文本模式,包括普通字符(例如,a到z之間的字母)和特殊字符(稱為元字符)。 正則表達式使用單個字符串來描述,匹配一系列匹配某個句法規則的字符串。 2、…

《論文閱讀13》Efficient Urban-scale Point Clouds Segmentationwith BEV Projection

一、論文 研究領域: 城市級3D語義分割論文:Efficient Urban-scale Point Clouds Segmentationwith BEV Projection清華大學,新疆大學2021.9.19論文github論文鏈接 二、論文概要 2.1主要思路 提出了城市級3D語義分割新的方法,將…

1.SpringMVC接收請求參數及數據回顯:前端url地址欄傳遞參數通過轉發顯示在網頁

1、SpringMVC 處理前端提交的數據 1.1 提交的域名和處理方法的參數不一致,使用注解解決 1.2 提交的域名和處理方法的參數不一致,使用注解解決 1.3 提交的是一個對象 2、前端url地址欄傳遞的是一個參數 請求地址url:http://localhost:8080/s…

測試開發工程師到底是做什么的?

一二三線互聯網公司對測試開發工程師的要求: 現在很多測試的同事對測試開發工程師的認識都有一定的誤差。 我最早在阿里的時候和測試開發工程師溝通的時候,發現阿里的測試開發工程師,他們基本上都分為兩種,一種是業務類型的&…

Python基礎教程: json序列化詳細用法介紹

前言 嗨嘍,大家好呀~這里是愛看美女的茜茜吶 Python內置的json模塊提供了非常完善的對象到JSON格式的轉換。 廢話不多說,我們先看看如何把Python對象變成一個JSON: d dict(nameKaven, age17, sexMale) print(json.dumps(d)) # {"na…

【Linux】環境變量

目錄 一、環境變量的概念二、 常見的環境變量1.查看環境變量的方法2.PATH3.HOME4.SHELL 三、環境變量的相關指令四、命令行參數 一、環境變量的概念 環境變量(environment variables)一般是指在操作系統中用來指定操作系統運行環境的一些參數 如:我們在編寫C/C代碼的…

Prometheus技術文檔-基本使用-配置文件全解!!!!!

簡介: Prometheus是一個開源的系統監控和告警系統,由Google的BorgMon監控系統發展而來。它主要用于監控和度量各種時間序列數據,比如系統性能、網絡延遲、應用程序錯誤等。Prometheus通過采集監控數據并存儲在時間序列數據庫中,…

【視頻】使用OBS將MP4推流至騰訊云直播

1、下載OBS OBS官網:https://obsproject.com/ OBS支持Win、Mac、Linux,如果下載速度很慢,建議使用迅雷下載 2、OBS推流設置 2.1 添加場景 默認會有一個“場景”,如果想繼續添加可以點擊“+”按鈕 2.2 添加媒體源 1)點擊“來源”窗口中“+”按鈕 2)支持的媒體源如…

什么是Redis緩存雪崩、緩存穿透、緩存擊穿

緩存穿透(Cache Penetration) 什么是緩存穿透? 緩存穿透是指惡意或無效的請求導致緩存無法命中,從而每個請求都需要訪問數據庫。這可能發生在請求的數據根本不存在于緩存和數據庫中。 緩存穿透解決方案 使用布隆過濾器&#x…

安裝Tomac服務器——安裝步驟以及易出現問題的解決方法

文章目錄 前言 一、下載Tomcat及解壓 1、選擇下載版本(本文選擇tomcat 8版本為例) 2、解壓安裝包 二、配置環境 1、在電腦搜索欄里面搜索環境變量即可 2、點擊高級系統設置->環境變量->新建系統變量 1) 新建系統變量,變量名為…

【學會動態規劃】最大子數組和(19)

目錄 動態規劃怎么學? 1. 題目解析 2. 算法原理 1. 狀態表示 2. 狀態轉移方程 3. 初始化 4. 填表順序 5. 返回值 3. 代碼編寫 寫在最后: 動態規劃怎么學? 學習一個算法沒有捷徑,更何況是學習動態規劃, 跟我…

LeetCode 0088. 合并兩個有序數組

【LetMeFly】88.合并兩個有序數組:O(m 1) O(1)的做法 力扣題目鏈接:https://leetcode.cn/problems/merge-sorted-array/ 給你兩個按 非遞減順序 排列的整數數組 nums1 和 nums2,另有兩個整數 m 和 n ,分別表示 nums1 和 nums2…

Linux:Shell編輯之文本處理器(sed)

目錄 緒論 1、sed的原理:讀取 執行 顯示 三個過程 2、sed 文本內容處理工具,文件過大怎么辦? 3、sed的操作選項 3.1 常用選項 3.2 操作符 3.3 行號的范圍打印 3.4 對包含指定字符串的內容進行打印 3.5 刪 3.5.1 正則表達式刪除 3.6…

一個工作簿中的多個工作表拆分成多個工作簿

在Excel 2016中將一個工作簿中的多個工作表拆分成多個工作簿,在開發工具中的vba 模塊中輸入一下代碼(并修改savepath的值為要存儲的路徑),然后運行即可。 Sub SplitWorkbook()Dim srcWorkbook As WorkbookDim srcWorksheet As Wo…