MVP

 

MVP是一种广泛使用的UI架构模式,适用于基于事件驱动的应用框架。

能够与 Model直接进行交互的仅限于 Presenter, View 只能通过 Presenter 间拉地调用 Model。

MVP分PV(Passive View) 和 (Supervising Controller)两种模式

SC(Supervising Controller)

public partial class WebForm1 : System.Web.UI.Page,IEmployeeSearchView{public EmployeeSearchPresenter Presenter { get; private set; } public event EventHandler<DepartmentSelectedEventArgs> DepartmentSelected; public WebForm1() { this.Presenter = new EmployeeSearchPresenter(this); } protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { this.Presenter.Initialize(); } } protected void ButtonSearch_Click(object sender, EventArgs e) { string department = this.DropDownListDepartments.SelectedValue; DepartmentSelectedEventArgs eventArgs = new DepartmentSelectedEventArgs(department); if (null != DepartmentSelected) { DepartmentSelected(this, eventArgs); } } public void BindEmployees(IEnumerable<Employee> employees) { this.GridViewEmployees.DataSource = employees; this.GridViewEmployees.DataBind(); } public void BindDepartments(IEnumerable<string> departments) { this.DropDownListDepartments.DataSource = departments; this.DropDownListDepartments.DataBind(); } } public class EmployeeSearchPresenter { public IEmployeeSearchView View { get; private set; } public EmployeeRepository Repository { get; private set; } public EmployeeSearchPresenter(IEmployeeSearchView view) { this.View = view; this.Repository = new EmployeeRepository(); this.View.DepartmentSelected += OnDepartmentSelected; } private void OnDepartmentSelected(object sender, DepartmentSelectedEventArgs e) { string department = e.Department; var employees = this.Repository.GetEmployees(department); this.View.BindEmployees(employees); } public void Initialize() { IEnumerable<Employee> employees = this.Repository.GetEmployees(); this.View.BindEmployees(employees); string[] departments = new string[] { "销售部", "采购部", "人事部", "IT部" }; this.View.BindDepartments(departments); } } public class DepartmentSelectedEventArgs : EventArgs { public string Department { get; private set; } public DepartmentSelectedEventArgs(string department) { this.Department = department; } } public interface IEmployeeSearchView { void BindEmployees(IEnumerable<Employee> employees); void BindDepartments(IEnumerable<string> departments); event EventHandler<DepartmentSelectedEventArgs> DepartmentSelected; } public class EmployeeRepository { private static IList<Employee> employees; static EmployeeRepository() { employees = new List<Employee>(); employees.Add(new Employee("001", "张三", "", new DateTime(1981, 8, 24), "销售部")); employees.Add(new Employee("002", "李四", "", new DateTime(1982, 7, 24), "人事部")); employees.Add(new Employee("003", "王五", "", new DateTime(1981, 9, 21), "销售部")); employees.Add(new Employee("004", "张三1", "", new DateTime(1981, 8, 24), "销售部")); employees.Add(new Employee("005", "张三2", "", new DateTime(1981, 8, 24), "销售部")); employees.Add(new Employee("006", "张三3

转载于:https://www.cnblogs.com/zhangdx/p/4440268.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV——图像显示与写入

1、图像显示与写入的代码如下&#xff1a; #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp>using namespace cv; using namespace std; //opencv中图像显示与写入 int main() {Mat myMat imread("小狗1.jpg", -1);if (myMat.em…

工业3D打印:一场仍处在初级阶段的技术革命

来源&#xff1a;资本实验室摘要&#xff1a;曾记否&#xff0c;几年前当我们在实体店看到3D打印机打印出的一个个小玩意时&#xff0c;那种油然而生的新鲜与神奇感&#xff1f;然而&#xff0c;短短几年&#xff0c;面对这种新事物&#xff0c;我们已经见怪不怪。此外&#xf…

OpenCV——读取视频文件并写入文件

1、代码如下&#xff1a; #include<opencv2/opencv.hpp> using namespace cv;//-----------------------------------【main()函数】-------------------------------------------- // 描述&#xff1a;控制台应用程序的入口函数&#xff0c;我们…

人工智能的现状与未来(附PPT)

来源&#xff1a;网经科技摘要&#xff1a;人工智能引领新的工业革命&#xff0c;需要正确理解其技术核心、学科定位、架构演进&#xff0c;当前深度学习和知识图谱成其左膀右臂&#xff0c;象征人类智谋的智能博弈在围棋后的下一个高地在哪里&#xff1f;走向人机融合的未来&a…

【最新】三位深度学习创始人共同获得了2019年公布的图灵奖

来源&#xff1a;biendata数据实战派2019年3月27日 ——ACM宣布&#xff0c;深度学习的三位创造者Yoshua Bengio, Yann LeCun, 以及Geoffrey Hinton获得了2019年的图灵奖。今天&#xff0c;深度学习已经成为了人工智能技术领域最重要的技术之一。在最近数年中&#xff0c;计算机…

Throwable 结构图

从这个图中就可以看出运行时异常是数组越界、空指针、类转换错误之类的异常&#xff0c;解决方法是修改代码而其他异常&#xff0c;也就是已检查异常&#xff0c;则是需要抛出或者捕捉转载于:https://www.cnblogs.com/dolphin007/p/4446105.html

无人驾驶产业发展现状及影响

来源&#xff1a;《中国国情国力》杂志摘要&#xff1a;无人驾驶产业将是我国对美欧日等传统汽车大国实现变道超车的重要领域。我国无人驾驶产业需求巨大、规模快速增长&#xff0c;但是人才缺口和尚不完善的法律仍是制约产业发展的障碍。无人驾驶产业改变了就业结构&#xff0…

Java中9种IO的读取方式

数据的读写&#xff0c;按照数据类型可以分为两种&#xff1a;字符流和字节流&#xff08;二者区别&#xff1f;&#xff09;。所以数据读取方式按照数据类型也可以分为两类&#xff1a;字节流的读取和字符流的读取。 一、字节流读取操作&#xff1a;| ||-----1、FileInputStre…

推翻《Nature》:生命不息,神经发生不止...

摘要&#xff1a;热播剧《都挺好》里的巨婴苏大强最后也患了阿尔兹海默症来源&#xff1a;中国生物技术网上图显示了68岁时死亡的男性海马齿状回的组织。他在死亡时有一个健康的大脑。在图片中&#xff0c;新鲜的脑细胞呈红色&#xff0c;成熟的脑细胞呈蓝色。图片来源&#xf…

OpenCV—基本矩阵操作与示例

OpenCV的基本矩阵操作与示例OpenCV中的矩阵操作非常重要&#xff0c;本文总结了矩阵的创建、初始化以及基本矩阵操作&#xff0c;给出了示例代码&#xff0c;主要内容包括&#xff1a;创建与初始化矩阵加减法矩阵乘法矩阵转置矩阵求逆矩阵非零元素个数矩阵均值与标准差矩阵全局…

人工智能的三大教父,谱写了一段关于勇气的寓言

来源&#xff1a;原理上世纪80年代末&#xff0c;还在加拿大攻读硕的尤舒亚本吉奥&#xff08;Yoshua Bengio&#xff09;被一个当时并不怎么流行的想法迷住了。那时&#xff0c;有少数从事人工智能研究的计算机科学家试图研发这样一种软件&#xff0c;这种软件可以大致模仿神经…

OpenCV——绘制基本图形

1、代码如下&#xff1a; #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp>using namespace cv;int main() {Size size(800,800);Size size2(300, 200);Mat img Mat::zeros(size, CV_8UC3);P…

动图|几张动图告诉你,工业机器人无所不能!

来源&#xff1a;机电微学堂1.最常见的汽车生产线车间 ☟2.准确抓住手机边缘 ☟3.装配机械手 ☟4.写毛笔字 ☟5.机器人参与上下料 ☟6.把次品投出 ☟7.喷涂机器人 ☟8.六轴机械手 ☟9.抓取机械手 ☟10.切香肠 ☟11.焊接 ☟12.点焊 ☟13.码垛机械手 ☟14.检测 ☟15.打台球 ☟16.…

银联在线支付---利用测试案例代码模拟支付应用(修改)

一、工程搭建 新建一个Web工程&#xff0c;命名为PayOnLine&#xff0c;把你下载好的案例代码拷贝到你的工程下&#xff0c;我的代码目录如下&#xff1a;acp_sdk.properties配置文件需要放在类根路劲下&#xff0c;里面的参数配置信息&#xff0c;下面是案例提供的配置提示&am…

图像处理-线性滤波-1 基础(相关算子、卷积算子、边缘效应)

这里讨论利用输入图像中像素的小邻域来产生输出图像的方法&#xff0c;在信号处理中这种方法称为滤波&#xff08;filtering&#xff09;。其中&#xff0c;最常用的是线性滤波&#xff1a;输出像素是输入邻域像素的加权和。1.相关算子&#xff08;Correlation Operator)定义&a…

力拎30磅!波士顿动力物流机器人Handle亮相,还会摆货架

来源&#xff1a;机器之心摘要&#xff1a;这是一个会堆箱子的机器人。自 2013 年被谷歌收购后&#xff0c;波士顿动力一直就是机器人公司中的「网红」&#xff0c;每次新视频的发布都能引起业内极大的关注。后来&#xff0c;因种种原因&#xff0c;波士顿动力于 2017 年被谷歌…

MFC基础类及其层次结构

MFC基础类及其层次结构 从类CComdTarget层层派生出绝大多数MFC中的类&#xff0c;其层次结构为下图所示. 从根类Cobject层层派生出绝大多数MFC中的类&#xff0c;其层次结构为下图所示. MFC中重点类 其中&#xff0c;CObject类是MFC提供的绝大多数类的基类。该类完成动态空间的…

6个整改!2018年国家重点实验室评估结果公布

来源&#xff1a;科技部网站近日&#xff0c;国家科技部公布了2018年工程和材料领域国家重点实验室评估处理结果。本次64个实验室参加评估&#xff0c;其中工程领域共有43个&#xff0c;材料领域共有21个。评估结果显示&#xff0c;共有6个实验室要求整改&#xff0c;没有实验室…

新智能时代颠覆情报的未来

来源&#xff1a;王飞跃的科学网博客摘要&#xff1a;人工情报机构以“数字”和软件的形式记录或承载了一个实际情报机构的知识、行动和组织等KAO一体化的步骤与过程。访中科院自动化研究所复杂系统管理与控制国家重点实验室主任 王飞跃本期嘉宾&#xff1a;王飞跃&#xff0c;…

MFC实现图像灰度、采样和量化功能详解

本文主要讲述基于VC6.0 MFC图像处理的应用知识&#xff0c;主要结合自己大三所学课程《数字图像处理》及课件进行讲解&#xff0c;主要通过MFC单文档视图实现显示BMP格式图片&#xff0c;并通过Bitmap进行灰度处理、图片采样和量化功能。 个人认为对初学者VC6.0可能还是…