中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

說(shuo)說(shuo)設計模(mo)式~組合模(mo)式(Composite)

返回目錄

何時(shi)能(neng)用(yong)到(dao)它(ta)?

組(zu)合(he)模式又叫(jiao)部分-整體模式,在樹(shu)型結構中(zhong),模糊了(le)簡單(dan)(dan)元(yuan)(yuan)(yuan)素和復(fu)雜(za)元(yuan)(yuan)(yuan)素的概(gai)念(nian),客戶程(cheng)序(xu)可以向處理簡單(dan)(dan)元(yuan)(yuan)(yuan)素一(yi)(yi)樣來(lai)處理復(fu)雜(za)元(yuan)(yuan)(yuan)素,從(cong)而使得客戶程(cheng)序(xu)與復(fu)雜(za)元(yuan)(yuan)(yuan)素的內(nei)部結構解耦(ou)。對(dui)(dui)于今(jin)天這(zhe)(zhe)個例子來(lai)說,它(ta)(ta)(ta)可以很清楚的說明組(zu)合(he)模式的用意,首先(xian)是(shi)一(yi)(yi)個Graphics對(dui)(dui)象,它(ta)(ta)(ta)表示是(shi)一(yi)(yi)繪圖(tu)(tu)功能(樹(shu)根(gen)),而circle,line和rectangle分別是(shi)簡單(dan)(dan)的圖(tu)(tu)形(xing),它(ta)(ta)(ta)們內(nei)部不能再有其它(ta)(ta)(ta)圖(tu)(tu)形(xing)了(le)(相(xiang)當于樹(shu)葉),而picture是(shi)一(yi)(yi)個復(fu)雜(za)圖(tu)(tu)形(xing),它(ta)(ta)(ta)由circle,line和rectangle組(zu)成(相(xiang)當于樹(shu)枝(zhi)),而它(ta)(ta)(ta)對(dui)(dui)外(wai)將這(zhe)(zhe)些(xie)子對(dui)(dui)象隱藏了(le),只對(dui)(dui)外(wai)公開了(le)add和remove方法(fa),用來(lai)向picture內(nei)部添加簡單(dan)(dan)對(dui)(dui)象。

組合模式的結構圖

組合模式實現說明

Graphics:圖像基類,所以(yi)和(he)圖像有(you)關的(de)類都(dou)繼承(cheng)它

Picture:照片,它(ta)由一些(xie)簡單(dan)圖(tu)形組(zu)成

Circle:簡單圖(tu)形-圓

Line:簡(jian)單圖形-線

Rectangle:簡(jian)單(dan)圖形-矩(ju)形

組合模式的C#實現

#region 組合模式
    /// <summary>
    /// 圖像基類,所以和圖像有關的類都繼(ji)承它(ta)
    /// </summary>
    public abstract class Graphics
    {
        protected string _name;

        public Graphics(string name)
        {
            this._name = name;
        }
        public abstract void Draw();
    }
    /// <summary>
    /// 照片,它由一(yi)些(xie)簡單圖形組成
    /// </summary>
    public class Picture : Graphics
    {
        protected ArrayList picList = new ArrayList();

        public Picture(string name)
            : base(name)
        { }
        public override void Draw()
        {
            Console.WriteLine("Draw a" + _name.ToString());

            foreach (Graphics g in picList)
            {
                g.Draw();
            }
        }

        public void Add(Graphics g)
        {
            picList.Add(g);
        }
        public void Remove(Graphics g)
        {
            picList.Remove(g);
        }
    }
    /// <summary>
    /// 簡單圖形-線
    /// </summary>
    public class Line : Graphics
    {
        public Line(string name)
            : base(name)
        { }

        public override void Draw()
        {
            Console.WriteLine("Draw a" + _name.ToString());
        }
    }
    /// <summary>
    /// 簡(jian)單圖(tu)形(xing)-圓
    /// </summary>
    public class Circle : Graphics
    {
        public Circle(string name)
            : base(name)
        { }

        public override void Draw()
        {
            Console.WriteLine("Draw a" + _name.ToString());
        }
    }
    /// <summary>
    /// 簡單(dan)圖形-矩形
    /// </summary>
    public class Rectangle : Graphics
    {
        public Rectangle(string name)
            : base(name)
        { }

        public override void Draw()
        {
            Console.WriteLine("Draw a" + _name.ToString());
        }
    }

    #endregion

調用代碼

           #region 組合模式調用
            Picture root = new Picture("Root");

            root.Add(new Line("Line"));
            root.Add(new Circle("Circle"));

            Rectangle r = new Rectangle("Rectangle");
            root.Add(r);

            root.Draw();
            #endregion

屏幕截圖

通過上面的(de)圖我們可以發展,這個(ge)picture圖像,它由一條線,一個(ge)圓和一個(ge)矩形組成。

返回目錄

posted @ 2014-08-15 11:46  張占嶺  閱讀(993)  評論(0)    收藏  舉報