[设计]命令模式
来源:互联网 发布:用淘宝联盟赚钱安全吗 编辑:程序博客网 时间:2024/06/08 10:34
[设计]命令模式
场景
- 要保存数据到文件。但是服务提示的接口有顺序的要求
那就 一个挨着一个的调用呗,正确,可是在应用中多线程的情况下,乱的给那什么啊?什么,麻绳。
解决办法
- 传之前排好顺序一下传过去。
- 当然如果有问题不是加一层可以解决的,那就加两层这个小问题应该加一层就可以了。让命令的发出者的执行者分开。
- 让命令类,发生类,执行类都有自己的抽象类,抽象更稳定,此处只抽了命令,以做演示。
- 我们先创建一个执行者的类也就是接收命令干活的类。此处不做抽象,看具体问题和环境。设计模式是死的,用的人是活的。
public class ServerReceiver { public void SaveData() { Console.WriteLine("服务保存数据到SqL"); } }
- 创建一个命令的基类
public abstract class CommandBase { protected ServerReceiver SR; public CommandBase(ServerReceiver sr) { SR = sr; } public abstract void ActionCommand(); }
- 创建一个具体的保存命令子类
class SaveCommand : CommandBase { public SaveCommand(ServerReceiver sr):base(sr) { } public override void ActionCommand() { SR.SaveData(); } }
- 创建一个命令发出类
class CommandInvoke { private CommandBase CD; public CommandInvoke(CommandBase cb) { CD = cb; } public void DoCommand() { CD.ActionCommand(); } }
- 我们可以这样用
static void Main(string[] args) { ServerReceiver sr = new ServerReceiver(); CommandBase cb = new SaveCommand(sr); CommandInvoke ci = new CommandInvoke(cb); ci.DoCommand(); Console.Read(); }
类图
- 占坑
注意
- 这样可以更好的让命令有序,
- 可以执行uodo和redo的功能,想想怎么弄,我们可以把命令对象缓存起来啊,这样如果不成功我们redo一下
- 扩展容易这是共同的好处了吧
- 其实我们可以用命令来实现回调的
源码
原文地址
功能实快的快分为真快和假快,一分实现了第二次维护要一天,三次一周….;还有一种10分钟实现了第二次维护也是十分钟三次还是十分钟。那种更好呢?肯定第二种,现实生活中第一种好像活的也不错有可能比第二种还要好呢啊哈哈。
阅读全文
0 0
- 设计模式---命令模式
- 设计模式-命令模式
- 设计模式:命令模式
- 设计模式:命令模式
- 设计模式:命令模式
- 设计模式 命令模式
- 设计模式--命令模式
- 设计模式---命令模式
- 设计模式- 命令模式
- 设计模式---命令模式
- 设计模式 - 命令模式
- 【设计模式】【命令模式】
- 设计模式---命令模式
- 设计模式 - 命令模式
- 设计模式:命令模式
- 设计模式 - 命令模式
- 设计模式-命令模式
- 设计模式---命令模式
- [设计]观察者模式
- 图像中某点绕点旋转后的坐标,图像旋转坐标位置
- C语言指针实现简单二叉排序树
- Ubuntu搭建SFtp服务器
- idea设置字体大小
- [设计]命令模式
- 数论训练 {限制} [扩展gcd][组合数][容斥原理]
- 字母图形
- String、StringBuffer与StringBuilder之间区别
- [设计]适配器模式
- 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。
- 光学镜头的主要参数
- 10.19考试爆炸记
- UVa11100