C# 建造者模式

建造者模式:

  将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。

结构图:

                                 

代码实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 建造者模式
{

    abstract class PersonBuilder
    {
        protected Graphics g;
        protected Pen p;
        public PersonBuilder(Graphics g, Pen p)
        {
            this.g = g;
            this.p = p;
        }
        public abstract void BuildBody();
        public abstract void BuildHead();
        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.DrawEllilpse(p, 5, 2, 3, 3);
        }
        public override void BuildBody()
        {
            g.DrawRectangle(p, 6, 5, 1, 5);
        }
        public override void BuildArmLeft()
        {
            g.DrawLine(p, 6, 5, 4, 10);
        }
        public override void BuildArmRight()
        {
            g.DrawLine(p, 7, 5, 9, 10);
        }
        public override void BuildLegLeft()
        {
            g.DrawRectangle(p, 6, 5, 1, 5);
        }
        public override void BuildLegRight()
        {
            g.DrawEllilpse(p, 5, 2, 3, 3);
        }
    }
    class PersonDirector
    {
        private PersonBuilder pb;
        public PersonDirector(PersonBuilder pb)
        {
            this.pb = pb;
        }
        public void CreatePerson()
        {
            pb.BuildArmLeft();
            pb.BuildArmRight();
            pb.BuildBody();
            pb.BuildHead();
            pb.BuildLegLeft();
            pb.BuildLegRight();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Pen p = new Pen(Color.Yellow);
            PersonThinBuilder ptb = new PersonThinBuilder(pictureBox1.CreateGraphics(), p);
            PersonDirector pdThin = new  PersonDirector(ptb);
            pdThin.CreatePerson();
        }
    }
}

总结:

  建造者模式用于创建一些复杂的对象,并且这些对象的内部构件的顺序通常是稳定的,但是对象的构件通常面临复杂的变化。

猜你喜欢

转载自blog.csdn.net/wjf1997/article/details/80136914