`

装饰模式

    博客分类:
  • c#
 
阅读更多
还是上次那个按钮的作业,已经做了很久,也改了很多次了,希望这一次可以定了,也希望老师用着方便。

今天又学到了一个新的概念叫装饰模型。ouyj教的。
先说说老师的任务,当初不清楚她到底是要怎样,现在可能也会表述不清楚,但可以试试。
    要在一个form中显示按钮,按钮是通过读数据库中的站点数,来确定form中按钮的数量,form的大小和按钮的数量都是动态的。每个按钮的状态有两种,一种是红色,一种是绿色,每个按钮都对应一个站点的编号,每次按下按钮,按钮的颜色都会转变。
    因此在这里用了一个Light类来扩展Button的属性和方法
    //定义灯类
    public class Light
    {
        private Button face;
        private bool isRed;
        private string sID;

        public Light()
        {
            face = new Button();
            isRed = false;
            face.BackgroundImage = global::VavleControl.Properties.Resources.按钮绿色;
           
        }

        public Light(Button face, bool isRed)
        {
            this.face = face;
            this.isRed = isRed;
            //this.face.Click += new EventHandler(face_Click);
        }

        [Description("获取或设置button的值")]
        public Button Face
        {
            get
            {
                return face;
            }
            set
            {
                face = value;
            }
        }

        [Description("获取或设置变量的值")]
        public bool IsRed
        {
            get
            {
                return isRed;
            }
            set
            {
                isRed = value;
            }
        }

        public String SID
        {
            get
            {
                return sID;
            }
            set
            {
                sID = value;
            }
        }   
    }

上面这个其实就是装饰模式。
装饰模式的定义:动态地给对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更灵活。
分享到:
评论
1 楼 kkxl 2011-01-07  
list<>平均速度比arraylist快,所以要尽量用list吧

相关推荐

Global site tag (gtag.js) - Google Analytics