Java 使用MVC结构

Java 使用MVC结构

什么是MVC?//模型视图控制器(Model-View-Controller)
MVC是一种先进的设计结构,它的目的就是以会话形式提供GUI支持
MVC是一种通过3各不同部分构造一个软件或组件的思想办法

  • 模型(model)//用于存储数据对象
  • 视图(view)//为模型提供数据显示的对象
  • 控制器(controller)//用于处理用户的交互工作

简单来说MVC是一种思想,通过MVC结构可以使程序更具有对象化的特性,也更容易维护,为用户提供一个视图,以及及时的信息反馈

通过一个求三角面积的例子

首先创建一个三角形的类(模型)

public class Triangle { //三角形模型
    double sideA,sideB,sideC;   //三边
    boolean isTriangle; //是否为三角形
    public void setSideA(double sideA) {	//设置边长
        this.sideA = sideA;
    }
    public void setSideB(double sideB) {
        this.sideB = sideB;
    }
    public void setSideC(double sideC) {
        this.sideC = sideC;
    }
    public boolean isTriangle() {
        if(sideA + sideB > sideC && sideA + sideC > sideB && sideC + sideB > sideA ){
            isTriangle = true;
        }
        return isTriangle;
    }
    public double getResult() {
        if (this.isTriangle()){
            double p = (sideA + sideB + sideC)/2.0;
            double S = Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));  //用海伦公式求三角形面积
            return S;
        }
        else{   //一定要有else,否则不是三角形时就没有返回了
            return Double.NaN;  //NOT A NUMBER
        }
    };
}

然后创建的就是视图(view)

import javax.swing.*;
import java.awt.*;

public class myWindow extends JFrame {
    Triangle triangle;  //模型
    Controller controller;  //控制器
    JLabel jLabelA,jLabelB,jLabelC;
    JTextField jTextFieldA,jTextFieldB,jTextFieldC;
    JButton jButton;
    JTextArea jTextArea;
    myWindow(){
        setBounds(300,300,500,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        init();
        validate();
    }
     void init(){
        triangle = new Triangle();
        controller = new Controller();
        controller.setView(this);   //重要的一步
        JPanel jPanel = new JPanel();
        jPanel.setBackground(new Color(0x366728));
        jLabelA = new JLabel("边A");
        jPanel.add(jLabelA);
        jTextFieldA = new JTextField(7);
        jPanel.add(jTextFieldA);
        jLabelB = new JLabel("边B");
        jPanel.add(jLabelB);
        jTextFieldB = new JTextField(7);
        jPanel.add(jTextFieldB);
        jLabelC = new JLabel("边C");
        jPanel.add(jLabelC);
        jTextFieldC = new JTextField(7);
        jTextFieldC.addActionListener(controller);
        jPanel.add(jTextFieldC);
        jButton = new JButton("计算面积");
        jButton.addActionListener(controller);
        jPanel.add(jButton);
        add(jPanel,BorderLayout.NORTH);    //设置默认布局的顶部
        jTextArea = new JTextArea();
        add(jTextArea,BorderLayout.CENTER);
     }
}

最后就是创建控制器,也就是实现了某个接口的类

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Controller implements ActionListener {
    myWindow view;
    public void setView(myWindow view) {
        this.view = view;
    }
    @Override
    public void actionPerformed(ActionEvent actionEvent) {
        double SideA,SideB,SideC;
        try{
            SideA = Double.parseDouble(view.jTextFieldA.getText());
            SideB = Double.parseDouble(view.jTextFieldB.getText());
            SideC = Double.parseDouble(view.jTextFieldC.getText());
            view.triangle.setSideA(SideA);
            view.triangle.setSideB(SideB);
            view.triangle.setSideC(SideC);
            double result = view.triangle.getResult();
            view.jTextArea.append("三角形"+SideA+","+SideB+","+SideC+"的面积是"+result+"\n");
        }
        catch (Exception e){
            view.jTextArea.append("请输入数字");
        }

    }
}

运行效果图
在这里插入图片描述

几个要特别注意的点

  1. 知道三角形的三边求面积可以用海伦公式
  2. 要判断是否为三角形
  3. 设置视图时记得要controller.setView(this); //重要的一步

CSS

CSS 元素选择器
CSS 分组
CSS 类选择器详解

JavaScript

JavaScript 对象构造器
JavaScript 对象原型

CET4P166

clarify
decade
expression
vigorous
vision
dimension
unity
exact
mercy
via

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值