《大话设计模式》读书笔记-建造者模式

// 建造者类
    class PersonDirector
    {
        private PersonBuilder pb;

        public PersonDirector(PersonBuilder pb)
        {
            this.pb = pb;
        }

        public void CreatePerson()
        {
            pb.BuildHead();
            pb.BuildBody();
            pb.BuildArmLeft();
            pb.BuildArmRight();
            pb.BuildLegLeft();
            pb.BuildLegRight();
        }
    }

abstract class PersonBuilder
    {
        // 建造人的抽象类
        protected Graphics g;
        protected Pen p;

        public PersonBuilder(Graphics g, Pen p)
        {
            this.g = g;
            this.p = p;
        }

        public abstract void BuildHead();
        public abstract void BuildBody();
        public abstract void BuildArmLeft();
        public abstract void BuildArmRight();
        public abstract void BuildLegLeft();
        public abstract void BuildLegRight();
    }
// 瘦人类
    class PersonThinBuilder : PersonBuilder
    {
        public PersonThinBuilder(Graphics g,Pen p):base(g,p)
        {

        }

        public override void BuildHead()
        {
            g.DrawEllipse(p,50,20,30,30);
        }

        public override void BuildBody()
        {
            g.DrawRectangle(p,60,50,10,50);
        }

        public override void BuildArmLeft()
        {
            g.DrawLine(p,60,50,40,100);
        }

        public override void BuildArmRight()
        {
            g.DrawLine(p,70,50,90,100);
        }

        public override void BuildLegLeft()
        {
            g.DrawLine(p,60,100,45,150);
        }

        public override void BuildLegRight()
        {
            g.DrawLine(p,70,100,85,150);
        }
    }
Pen p = new Pen(Color.Black);
PersonThinBuilder ptb = new PersonThinBuilder(pictureBox1.CreateGraphics(), p);
PersonDirector pdThin = new PersonDirector(ptb);
pdThin.CreatePerson();
建造者模式:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。

posted @ 2010-01-08 23:09  liming1019  阅读(162)  评论(0)    收藏  举报