命令模式

简介: /* * User: Administrator * Date: 2007-7-2 Time: 15:49 *///一些命令,作用是画圆,画方,画线,三个主要的命令,//命令模式最主的特点是,可以方便的加入权限的判断//最后便使用了一个代理模式,来实现这个权限的判断//using System;using System.Drawing;using System.Windows.Forms
/*
 * User: Administrator
 * Date: 2007-7-2 Time: 15:49
 
*/
// 一些命令,作用是画圆,画方,画线,三个主要的命令,
// 命令模式最主的特点是,可以方便的加入权限的判断
// 最后便使用了一个代理模式,来实现这个权限的判断
//
using  System;
using  System.Drawing;
using  System.Windows.Forms;
namespace  SecurityCommand{

    
public   abstract   class  Command{
        
private  Graphics g;
        
public  Command(){}
        
public  Graphics cav{
            
get { return  g;}
            
set {g = value;}
        }

        
public   abstract   void  Execute();
    }

    
public   class  CircleCommand:Command{
        
public  CircleCommand(){}

        
public   override   void  Execute()
        {
            Pen p
= new  Pen(Color.Red);
            
this .cav.DrawEllipse(p, 0 , 0 , 100 , 100 );
        }
    }

    
public   class  LineCommand:Command{
        
public  LineCommand(){}
        
public   override   void  Execute()
        {
            Pen p
= new  Pen(Color.Red);
            
this .cav.DrawLine(p, 0 , 0 , 100 , 100 );
        }
    }

    
public   class  RectCommand:Command{
        
public  RectCommand(){}

        
public   override   void  Execute()
        {
            Pen p
= new  Pen(Color.Red);
            
this .cav.DrawRectangle(p, 0 , 0 , 100 , 100 );
        }
    }


    
public   class  SecurityCommand:Command{
        
private  Command c;

        
public  SecurityCommand(Command c){
            
this .c = c;
        }

        
public   override   void  Execute()
        {
            MessageBox.Show(
" 权限判断 " + c.GetType().Name);
            c.Execute();
        }
    }
}


// 界面的函数
//
/*

 * User: Administrator
 * Date: 2007-7-2 Time: 15:51
 
*/

using  System;
using  System.Drawing;
using  System.Windows.Forms;
using  SecurityCommand;

namespace  myMemonto
{
    
///   <summary>
    
///  Description of MyDraw.
    
///   </summary>
     public   partial   class  MyDraw : Form
    {
        
private  Command circle;
        
private  Command line;
        
private  Command rect;

        
private  Command scircle;
        
private  Command sline;
        
private  Command sRect;

        [STAThread]
        
public   static    void  Main(){
            Application.Run(
new  MyDraw());
        }

        
public  MyDraw()
        {
            
//
            
//  The InitializeComponent() call is required for Windows Forms designer support.
            
//
            InitializeComponent();
            Init();
            scircle
= new  SecurityCommand.SecurityCommand(circle);
            sline
= new  SecurityCommand.SecurityCommand(line);
            sRect
= new  SecurityCommand.SecurityCommand(rect);

            
//
            
//  TODO: Add constructor code after the InitializeComponent() call.
            
//
        }

        
void  Init(){
            circle
= new  SecurityCommand.CircleCommand();
            circle.cav
= this .CreateGraphics();

            line
= new  SecurityCommand.LineCommand();
            line.cav
= this .CreateGraphics();

            rect
= new  SecurityCommand.RectCommand();
            rect.cav
= this .CreateGraphics();
        }

        
void  TsmCircleClick( object  sender, EventArgs e)
        {
            scircle.Execute();
        }

        
void  TsmLineClick( object  sender, EventArgs e)
        {
            sline.Execute();
        }

        
void  TsmRectClick( object  sender, EventArgs e)
        {
            sRect.Execute();
        }

        
void  TsmExitClick( object  sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}
 
相关文章
|
Android开发 开发者
HarmonyOS和OpenHarmony区别联系
【7月更文挑战第26天】
798 17
|
10月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
335 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
机器学习/深度学习 人工智能 供应链
深度学习在图像识别中的应用及案例分析
【10月更文挑战第40天】本文将探讨深度学习在图像识别领域的应用,通过分析其基本原理、关键技术和实际应用案例,揭示深度学习如何革新了图像处理技术。文章不仅提供理论框架,还深入讨论了深度学习模型如卷积神经网络(CNN)的构建和训练过程,以及这些技术如何在自动驾驶汽车、医疗诊断等多个领域得到实际应用。通过具体案例,我们将看到深度学习如何使机器视觉更加精准和高效。
794 1
|
机器学习/深度学习 弹性计算 算法
阿里云服务器ECS中长期成本节省计划简介,助你优化上云成本
在云计算时代,企业对于云资源的需求日益增长,如何在保障业务稳定运行的同时,有效控制成本,成为许多企业关注的焦点。阿里云针对这部分用户的需求推出了ECS中长期成本节省计划(Saving Plan),节省计划是一种折扣权益计划,可以抵扣按量付费实例(不含抢占式实例)的账单。相比包年包月实例、预留实例券+按量付费实例的组合,节省计划+按量付费实例的组合在使用上更加灵活。本文将详细介绍这一计划的核心优势、应用场景以及如何参与,助您轻松优化上云成本。
阿里云服务器ECS中长期成本节省计划简介,助你优化上云成本
|
算法 安全 Go
Go语言哈希函数不可不知的N个实战技巧
Go语言哈希函数不可不知的N个实战技巧
517 0
动态IP与静态IP的区别,你选对了吗?
动态IP与静态IP主要区别在于灵活性与稳定性。动态IP由ISP自动分配,适合家庭和小型企业,具有灵活性但安全性较低;静态IP是固定地址,适用于需要稳定连接的大型企业或服务器。静态IP需手动配置,成本较高,但正确配置后可降低安全风险。选择哪种取决于具体需求和预算。
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp微信小程序的健身房私教预约系统的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的健身房私教预约系统的详细设计和实现
165 0
|
人工智能 API Python
极智AI | 再谈昇腾CANN量化
大家好,我是极智视界,本文介绍一下 再谈昇腾CANN量化。
411 1
|
存储 人工智能 自然语言处理
阿里云搜索产品智能化升级发布
在2023云栖大会上,阿里云搜索负责人郭瑞杰对阿里云搜索产品智能化升级发布,在全场景的搜索细分领域,提供智能化产品能力。
1484 0