美文网首页设计模式
建造者模式(Builder)

建造者模式(Builder)

作者: Charles2018 | 来源:发表于2018-11-13 21:38 被阅读0次
PersonBuilder.cs
using System.Drawing;

namespace WindowsFormsApp1
{
    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();
    }
}
PersonFatBuilder.cs
using System.Drawing;

namespace WindowsFormsApp1
{
    class PersonFatBuilder : PersonBuilder
    {
        public PersonFatBuilder(Graphics _g, Pen _p) : base(_g, _p) { }
        public override void BuildArmLeft()
        {
            _g.DrawLine(_p, 50, 50, 30, 100); // Arm Left
        }

        public override void BuildArmRight()
        {
            _g.DrawLine(_p, 80, 50, 100, 100); // Arm Right
        }

        public override void BuildBody()
        {
            _g.DrawEllipse(_p, 45, 50, 40, 50); // Body
        }

        public override void BuildHead()
        {
            _g.DrawEllipse(_p, 50, 20, 30, 30); // Head
        }

        public override void BuildLegLeft()
        {
            _g.DrawLine(_p, 60, 100, 45, 150); // Leg Left
        }

        public override void BuildLegRight()
        {
            _g.DrawLine(_p, 70, 100, 85, 150); // Leg Right
        }
    }
}
PersonThinBuilder.cs
using System.Drawing;

namespace WindowsFormsApp1
{
    class PersonThinBuilder : PersonBuilder
    {
        public PersonThinBuilder(Graphics _g, Pen _p) : base(_g, _p) { }
        public override void BuildArmLeft()
        {
            _g.DrawLine(_p, 60, 50, 40, 100); // Left hand
        }

        public override void BuildArmRight()
        {
            _g.DrawLine(_p, 70, 50, 90, 100); // Right hand
        }

        public override void BuildBody()
        {
            _g.DrawRectangle(_p, 60, 50, 10, 50); // Body
        }

        public override void BuildHead()
        {
            _g.DrawEllipse(_p, 50, 20, 30, 30); // Head
        }

        public override void BuildLegLeft()
        {
            _g.DrawLine(_p, 60, 100, 45, 150); // Left Leg
        }

        public override void BuildLegRight()
        {
            _g.DrawLine(_p, 70, 100, 85, 150); // Leg Right
        }
    }
}
PersonDirector.cs
namespace WindowsFormsApp1
{
    class PersonDirector
    {
        private PersonBuilder _builder;
        public PersonDirector(PersonBuilder _builder)
        {
            this._builder = _builder;
        }

        public void CreatePerson()
        {
            _builder.BuildHead();
            _builder.BuildBody();
            _builder.BuildArmLeft();
            _builder.BuildArmRight();
            _builder.BuildLegLeft();
            _builder.BuildLegRight();
        }
    }
}
MainForm.cs
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            pictureBox1.Paint += new PaintEventHandler(delegate {
                Pen p = new Pen(Color.Red,5);
                Graphics g = pictureBox1.CreateGraphics();
                PersonDirector director = new PersonDirector(new PersonThinBuilder(g, p));
                director.CreatePerson();
            });

            pictureBox2.Paint += new PaintEventHandler(delegate
            {
                Pen p = new Pen(Color.Black,5);
                Graphics g = pictureBox2.CreateGraphics();
                PersonDirector director = new PersonDirector(new PersonFatBuilder(g, p));
                director.CreatePerson();
            });
        }
    }
}

相关文章

  • 设计模式(四):建造者模式

    建造者模式(Builder Pattern) 建造者模式(Builder Pattern)将一个复杂的构建与其表示...

  • 建造者模式

    建造者模式 创建型模式 Director、Builder、Product建造模型 Builder负责构建Produ...

  • 设计模式之建造者模式

    建造者模式的定义   建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:  Separat...

  • Builder pattern

    Builder pattern 这里所介绍的建造者模式不是GOF中介绍的建造者模式。GOF中的建造者模式主要用于抽...

  • 建造者模式

    建造者模式的定义 建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:Separate th...

  • 设计模式--建造者模式

    目录 本文的结构如下: 引言 什么是建造者模式 模式的结构 典型代码 代码示例 Builder模式变种 建造者模式...

  • Android 中的建造者模式

    Android 中的建造者模式 概述 建造者模式(Builder Pattern)也叫生成器模式,其定义如下:se...

  • 设计模式-构建者模式

    概念 建造者模式(英:Builder Pattern)是一种创建型设计模式,又名:生成器模式。GOF 给建造者模式...

  • 建造者模式-Builder(建造者)

    前言 在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。例如,计算机是...

  • 五 建造者模式

    本文主要介绍创建型模式的最后一种————建造者模式。 概念 建造者模式(英:Builder Pattern)是一种...

网友评论

    本文标题:建造者模式(Builder)

    本文链接:https://www.haomeiwen.com/subject/lgrrfqtx.html