zoukankan      html  css  js  c++  java
  • Command 设计模式

     public interface ICommand
        {
            void Show();
            void Undo();
            void Redo();
        }
     public class Document
        {        
            public void ShowText()
            {
            }
        }
     public class Graphics
        {
            public void ShowGraphics()
            {
            }
        }
     public class DocumentCommand:ICommand
        {
            Document document;
    
            public DocumentCommand(Document document)
            {
                this.document = document;
            }
    
            public void Show()
            {
                document.ShowText();
            }
    
            public void Undo()
            {
            }
    
            public void Redo()
            {
            }
        }
     public class GraphicsCommand:ICommand
        {
            Graphics graphics;
            
            public GraphicsCommand(Graphics graphics)
            {
                this.graphics = graphics;
            }
    
            public void Show()
            {
                graphics.ShowGraphics();
            }
    
            public void Undo()
            {
            }
    
            public void Redo()
            {
            }
        }
     Stack<ICommand> stack;
            IList<ICommand> undoList;
            IList<ICommand> redoList;
    
            public Application( Stack<ICommand> stack )
            {
                this.stack = stack;
            }
    
            public void Show()
            {
                foreach( ICommand c in stack )
                {
                    c.Show();
                }
            }
    
            public void Redo()
            {
                ICommand command = stack.Pop();
                if( undoList.Count > 0 )
                {
                    command.Redo();
                    redoList.Add( command );
                }
            }
    
            public void Undo()
            {
                if( redoList.Count > 0 )
                {
                    ICommand command = stack.Pop();
                    command.Undo();
    
                    undoList.Add( command );
                }
            }

    依赖抽象而非具体,解除耦合,依赖倒置

  • 相关阅读:
    //删除字符串值的某个值
    disabled和readonly 的用法区别
    Js判断为空或不是对象或是否相等
    1.类型分析:
    多行内容放到一行中(内容的合并)
    sql split
    sql修改列名
    对oracle数字类型的研究
    kettle--组件(3)--行转列
    kettle--组件(2)--计算器
  • 原文地址:https://www.cnblogs.com/wangchuang/p/3010818.html
Copyright © 2011-2022 走看看