惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
爱范儿
爱范儿
博客园 - 司徒正美
J
Java Code Geeks
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
D
Docker
Blog — PlanetScale
Blog — PlanetScale
Recent Announcements
Recent Announcements
罗磊的独立博客
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
腾讯CDC
T
The Blog of Author Tim Ferriss
小众软件
小众软件
U
Unit 42
T
Tailwind CSS Blog

博客园 - 一万光年外

戏说平台 第七章 可插拔主控台 心情极度不爽,发几句牢骚,恳请放首页一天 戏说平台 第六章 煮酒论编程 戏说平台 异构外篇 与朋友的QQ聊天记录 戏说平台 第五章 异构 一种独特的实现异构数据库操作的方法 戏说平台 第四章 淫贱二人组 戏说平台 第三章 学艺 CDMP平台简介 PPT格式 戏说平台 第二章 拜师 戏说平台 第一章 穿越 可配置B/S,C/S两用平台之三:自定义业务续 可配置B/S,C/S两用平台之二:自定义业务 可配置B/S,C/S两用平台之一:系统概览 Ado.net处理数据库异常 Byte[]转十六进制 安装SQL SERVER2000时出现程序挂起错误的解决方法 老生常谈,设计模式之我见 - 工厂模式篇 转载fyireporting Reporting Services主从表实现
Action设计模式的.Net实现
一万光年外 · 2006-12-22 · via 博客园 - 一万光年外
 

首先从一个场景说起:

        我们常常有这样一个需求,比如说在列表窗体(Master)有很多按钮,如增加,修改,删除,保存,取消等,不同的情况下,按钮的状态可能会不一样,比如说,只有在编辑状态时,保存,取消按钮才可用等等. 

        然后双击列表,会弹出一个明细窗体(Detail),这个窗体也有如增加,修改,删除,保存,取消等按钮,且功能和刷新条件也与Master窗体的功能差不多,我们常把各自的业务逻辑写在各自的窗体,但这样不是显得太冗余了吗,其实,我们有一种比较好的方法来解决这个问题. 

        用过DELPHI的人应该都知道,有个TACTION类解决的就是这个问题,下面我用.NET代码来模拟TACTION的实现:

1. 先设计一个命令Cmd,主要定义操作的行为(如执行,刷新)及界面的绑定(此处假定绑定类为ToolStripMenuItem,如需绑定其它类,请自己扩展).其实现代码如下:

Code

2. 设计一个Act,Cmd进行封装

Code


3.
效果演示

增加master,entry窗体,随便增加一些按钮,命好名就行了

增加master的Action动作及绑定代码

Code

增加entry绑定代码

Code

最终效果演示:

master中点击增加后的刷新效果:

打开entry后,联动的刷新效果:

由于本人比较忙且太过懒散,很久没有更新BLOG了,过年时如果有时间的话,我准备写一系列分布式框架设计的文章,望广大园友支持及指正!