MVC风格

本文介绍了MVC风格的软件体系结构,包括模型、视图和控制器的职责及其相互作用。模型负责数据存取、业务逻辑和数据验证,视图用于用户交互并显示结果,控制器则协调用户输入和模型、视图之间的交互。这种设计提高了系统的可扩展性和可维护性,允许同一信息有不同的展现方式。示例代码展示了在Java中如何实现MVC风格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       MVC风格

点击了解更多软件体系结构风格

§模型-视图-控制器风格常被简称为MVC风格

§组件:模型、视图、控制器

§连接件:显式调用、隐式调用、其他机制(例如:Http协议)

工作机制:

Model:

§模型的职责

–负责数据存取

–负责业务逻辑实现

–负责数据验证

§模型:模型是应用程序的核心。它封装内核数据与状态,对模型的修改将扩散到所有视图中。所有需要从模型获取信息的对象都必须注册为模型的视图。

§在事件驱动系统,当信息发生改变,模型通知观察者(observers) (通常是视图),从而引起视图反应。

View:

§视图的职责:

–获取用户输入

–向controller发送处理请求

–接收来自Controller的反馈

–将model的处理结果显示给用户

§一个model可能有多个View

Controller:

§控制器职责:

–接收来自客户的请求

–调用model执行

–调用View显示执行结果

§控制器:控制器是提供给用户进行操作的接口。每个视图与一个控制器组件相关联。控制器接收用户的输入,通常是鼠标移动、键盘输入等。输入事件翻译成服务请求,送到模型或视图。用户只通过控制器与系统交互。

§两个主要分离:

–模型与界面分离

–控制器与视图分离

§优点:

–将各方面问题分解开来考虑,简化了系统设计,保证了系统的可扩展性。

–改变界面不影响应用程序的功能内核,使得系统易于演化开发,可维护性好。

–同一信息可以有不同的展现方式。

–业务逻辑更易测试

程序:

模型类CarModel封装二手车软件的业务逻辑部分,包括核心数据以及tell()方法(将状态的改变通知视图类)

import java.io.*;

import java.net.URL;

import java.net.URI;

import javax.swing.*;

importjava.util.*;

 

public classCarModel{

    private String[] carNameList;

    privateURL imgURL;

    privateURL carFileUrl;

    privateImageIcon imgIcon;

       private String carSelected;

    private String bitPrice;

    static final String CARFILES ="CarFiles/";

    static final String CARIMAGES ="CarImages/";

 

    public CarModel(){

        carNameList=new String[200];

      }

    public void setCarList(String[] cars){

               carNameList = cars;

       }

    public String[] getCarList(){

             return  carNameList;

    }

    public void setSelectedCar(String sCar){

        carSelected = sCar;

      }

      publicString getSelectedCar(){

           return carSelected;

      }

      publicvoid setBitPrice(String bPrice){

              bitPrice = "";

              bitPrice = bitPrice + bPrice;

       }

       public String getBitPrice(){

                     return bitPrice;

       }

       public void setupImageIcon(){

                 String iconStr = CARIMAGES + carSelected+".jpg";

              imgIcon = createImageIcon(iconStr);

              }

    public ImageIcon getImageIcon(){

                 return imgIcon;

       }

       public void setCarFileURL(){

          try{

                 String fileURLStr = CARFILES + carSelected+ ".html";

                 URI uri = (new File(fileURLStr)).toURI();

                 carFileUrl= uri.toURL();

          &nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值