架构MVC理解

1.MVC图论

在这里插入图片描述
对MVC各个模块最简单的理解就是

  • M:业务逻辑,数据读写,刷新V层视图
  • V:视图,显示,获取用户操作,传递用户操作到C层
  • C:控制层,根据V传过来的事件控制业务逻辑的执行

2.MVC各层之间的联系

V层要通知C层用户事件,所以V层需要一个C层的引用,同理C层需要一个M层的引用、M层需要一个V层的引用。

3.实现一个Java控制台版的MVC程序

我们用一段Java代码去写一个MVC的例子来帮助理解

  • 我们需要三个类,分别是View、Controller、Moudle
class View {//负责接收用户事件和更新界面显示
	
}
class Controller {//负责通知M层对数据处理
	
}
class Moudle{//负责数据处理,并显示在V层
	
}

在这里插入图片描述
根据上边的理解,我们在View中需要一个C层对象,在Controller中需要一个M层对象,在Moudle中需要一个V层对象

  • 接下来我们在每个类里去写一个set方法获取各层需要的引用对象
class View {//负责接收用户事件和更新界面显示
	//需要一个C层对象的引用
		Controller controller;
		public void setController(Controller controller) {
			this.controller = controller;
		}
}
class Controller {//负责通知M层对数据处理
	//需要一个M层对象的引用
		Moudle moudle;
		public void setMoudle(Moudle moudle) {
			this.moudle = moudle;
		}
}
class Moudle{//负责数据处理,并显示在V层
	//需要一个V层对象的引用
	View view;
	public void setView(View view) {
			this.view = view;
	}
}

在这里插入图片描述

  • 在View中添加变量a和b,模拟用户从UI输入的数据并对其运算结果进行显示,并添加a,b的get 方法以便M层获取数据
private int a;
		private int b;
		public void setController(Controller controller) {
			this.controller = controller;
		}
		
		public int getA() {
			return a;
		}
		public int getB() {
			return b;
		}
		public void show(Character c,int result) {//更新界面显示
			System.out.println("a"+c+"b="+result);
		};

在这里插入图片描述

  • 在View添加一个onListener方法用来模拟用户交互行为
		public void onListener() {//接收用户事件(用户输入数字,模拟点击了等于按钮)
			Scanner scanner=new Scanner(System.in);
			int i=scanner.nextInt();
			switch (i) {
			case 1:
				
				break ;
			case 2:
				
				break ;

			default:
				System.out.println("Error");;
			}
		}

在这里插入图片描述
C层根据用户行为添加相应操作,用户点击了1,就模拟加法运算,2 模拟减法运算


	public void data_add() {
		moudle.add();
	};
	public void data_subtract() {
		moudle.subtract();
	};

在这里插入图片描述
为了能使M层获取到V层的数据我们需要在V层添加get方法获取数据,上边已经添加过了

public void setController(Controller controller) {
		this.controller = controller;
	}
	public int getA() {
		return a;
	}
	public int getB() {
		return b;
	}

Moudle要对V层用户输入的数据进行处理并通知V层更新UI

public void add() {
		int result=view.getA()+view.getB();
		view.show('+', result);
	}
	public void subtract() {
		int result=view.getA()-view.getB();
		view.show('-', result);
	}

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190716182253979.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2pzdXBva2Vy,size_16,color_FFFFFF,t_70
Main方法里:
在这里插入图片描述
运行结果:
在这里插入图片描述
总结:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值