mvc-举例演示

1.概要

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

  1. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  2. View(视图) - 视图代表模型包含的数据的可视化。
  3. Controller(控制器) -  控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

个人观点:

关于mvc,m代码数据模型,v代码用户能够看到,数据的价值是什么?是能被用户看到。所以view和model本质上是数据的表现 形式。一个机器中数据,一个是用户能理解的数据。把数据用ui装起来就成了用户能够理解的数据。所以controler就是其他的东西。

控制命令是用户发出的,用户发给ui,本质上是用户通过view发命令,controler响应命令,加工数据,创建一个model,另一个view把数据表示出来。这里面提到两个view,view1=>controler=>model=>view1.

2.代码 

package test2;

import java.util.ArrayList;
import java.util.List;

import test2.Model.baseMode.DetailedModel;
import test2.Model.baseMode.SimpleModel;
import test2.Model.baseMode.ViewUpdte;

class Database{
	static List<ViewUpdte> detailedModels = new ArrayList<ViewUpdte>();
	static int index = 0;
	int insert(DetailedModel dm) {
		ViewUpdte vp = new ViewUpdte();
		vp.id = index++;
		vp.name = dm.name;
		vp.detailed = dm.detailed;
		detailedModels.add(vp);
		return vp.id;
	}
	
	DetailedModel getView(int id) {
		for(ViewUpdte mode:detailedModels) {
			if(mode.id == id) {
				return mode;
			}
		}
		return null;
	}
	
	void delete(int id) {
		for(ViewUpdte mode:detailedModels) {
			if(mode.id == id) {
				detailedModels.remove(mode);
				break;
			}
		}
	}
	void update(ViewUpdte vup) {
		for(ViewUpdte mode:detailedModels) {
			if(mode.id == vup.id) {
				mode.detailed = vup.detailed;
				mode.name = vup.name;
			}
		}
	}
	List<SimpleModel> searchList(String key) {
		List<SimpleModel> list = new ArrayList<SimpleModel>();
		for(ViewUpdte mode:detailedModels) {
			if(mode.name.contains(key)||mode.detailed.contains(key)) {
				SimpleModel sm = new SimpleModel();
				sm.id = mode.id;
				sm.name = mode.name;
				list.add(sm);
			}
		}
		return list;
	}
	List<SimpleModel> getAll(){
		List<SimpleModel> list = new ArrayList<SimpleModel>();
		for(ViewUpdte mode:detailedModels) {
			SimpleModel sm = new SimpleModel();
			sm.id = mode.id;
			sm.name = mode.name;
			list.add(sm);
		}
		return list;
	}
}
class Model{
	static class baseMode{
		static class BaseSimpleModel{
			String name;
		}
		static class DetailedModel extends BaseSimpleModel{
			String name;
			String detailed;
		}
		static class ViewUpdte extends DetailedModel{
			int id;
		}
		static class SimpleModel extends BaseSimpleModel{
			int id;
		}
	}
}
public class Mvc {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("mvc模拟实践");
		Mvc mvc = new Mvc();
		mvc.main();
	}
	void main() {
		Users user = new Users();
		user.main();
	}
	class Users{
		void main() {
			Models modes = new Models();
			View view =  new View();
			Controler conteoler = new Controler();
			
			view.controler = conteoler;
			conteoler.models = modes;
			modes.view = view;
			
			DetailedModel dm = new DetailedModel();
			dm.name = "name1";
			dm.detailed = "detailed1";
			conteoler.add(dm);
			
			DetailedModel dm2 = new DetailedModel();
			dm2.name = "name2";
			dm2.detailed = "detailed2";
			conteoler.add(dm2);
			
			DetailedModel dm3 = new DetailedModel();
			dm3.name = "n-ame3";
			dm3.detailed = "detailed3";
			conteoler.add(dm3);	
			
			conteoler.searchList("name");
			ViewUpdte vu = new ViewUpdte();
			vu.id = 1;
			vu.name = "name2-up";
			dm2.detailed = "detailed2-up";
			conteoler.update(vu);
			
			conteoler.delete(1);
		}
	}
	class Models{
		List<SimpleModel> simpleModels = null;
		DetailedModel detailedModel;
		View view;
		void setSimpleModels(List<SimpleModel> simpleModels) {
			this.simpleModels = simpleModels;
			view.changeSimpleModels(simpleModels);
		}
		void setDetailedModel(DetailedModel detailedModel) {
			this.detailedModel = detailedModel;
			view.changeDetailedModel(detailedModel);
		}
	}
	
	class View{
		Controler controler = new Controler();
		private void viewDetailed(DetailedModel detailedModel){
			System.out.println("\nviewDetailed:");
			System.out.println(detailedModel.name);
			System.out.println(detailedModel.detailed);
		}
		private void viewList(List<SimpleModel> simpleModels){
			System.out.println("\nviewList:");
			for(SimpleModel mode:simpleModels) {
				System.out.println("name:"+mode.name+" id"+mode.id);
			}
		}
		void changeSimpleModels(List<SimpleModel> simpleModels) {
			viewList(simpleModels);
		}
		void changeDetailedModel(DetailedModel detailedModel) {
			viewDetailed(detailedModel);
		}
	}
	class Controler{
		Database database = new Database();
		Models models;
		void add(DetailedModel mode) {
			int id = database.insert(mode);
			getView(id);
		}
		void update(ViewUpdte upmode) {
			database.update(upmode);
			getView(upmode.id);
		}
		void searchList(String key) {
			models.setSimpleModels(database.searchList(key));
		}
		void delete(int id) {
			database.delete(id);
			models.setSimpleModels(database.getAll());
		}
		void getView(int id) {
			models.setDetailedModel(database.getView(id));
		}
	}
}

3.运行效果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`feign-spring-mvc-starter` 是一个 Feign 的扩展,它支持使用 Spring MVC 注解来定义和调用 REST 服务。使用 `feign-spring-mvc-starter`,你可以像使用 Spring MVC 控制器一样定义 Feign 客户端,从而更方便地进行 REST 服务的开发。 在使用 `feign-spring-mvc-starter` 之前,你需要先了解 Feign 和 Spring MVC 的基本概念和用法。 Feign 是一个声明式的 Web 服务客户端,它可以帮助你更方便地定义和调用 REST 服务。Feign 的基本使用方法是定义一个接口,用于描述 REST 服务的 API,然后使用 Feign 注解来声明这个接口。 Spring MVC 是一个基于 Java 的 Web 框架,它提供了一组注解和 API,用于处理 Web 求和响应。 `feign-spring-mvc-starter` 将 Feign 和 Spring MVC 结合起来,使你可以使用 Spring MVC 注解来定义和调用 REST 服务。使用 `feign-spring-mvc-starter`,你可以更方便地使用 Feign 来调用 REST 服务。 以下是一个使用 `feign-spring-mvc-starter` 的示例: 1. 添加 Maven 依赖 在 pom.xml 文件中添加以下依赖项: ```xml <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-spring-mvc</artifactId> <version>5.3.1</version> </dependency> ``` 2. 定义 Feign 接口 定义一个 Feign 接口,用于描述 REST 服务的 API。例如: ```java @FeignClient(name = "example-service") public interface ExampleClient { @GetMapping("/example") String getExample(); } ``` 在这个接口中,我们使用了 `@FeignClient` 注解来声明这个接口是一个 Feign 客户端,并指定了服务的名称。然后,我们定义了一个 `getExample()` 方法,用于调用 example-service 服务的 /example 路径。 3. 定义 Spring MVC 控制器 定义一个 Spring MVC 控制器,用于处理来自客户端的求。例如: ```java @RestController public class ExampleController { private final ExampleClient exampleClient; public ExampleController(ExampleClient exampleClient) { this.exampleClient = exampleClient; } @GetMapping("/") public String index() { return exampleClient.getExample(); } } ``` 在这个控制器中,我们注入了 `ExampleClient`,并在 `index()` 方法中使用它来调用 example-service 服务的 /example 路径。 4. 运行应用程序 现在,你可以运行应用程序并访问 http://localhost:8080/ ,你应该会看到来自 example-service 服务的响应。 这就是一个使用 `feign-spring-mvc-starter` 的示例。使用 `feign-spring-mvc-starter`,你可以更方便地使用 Feign 来调用 REST 服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值