zoukankan      html  css  js  c++  java
  • 《大话设计模式》读书笔记建造者模式

    // 建造者类
        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();
    建造者模式:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。

  • 相关阅读:
    Python pip离线部署
    Windows API 纳秒级别延迟
    基于Cython和内置distutils库,实现python源码加密(非混淆模式)
    boost.property_tree读取中文乱码问题
    Direct初始化三步曲
    分享一个电子发票信息提取工具(Python)
    关于&0x80
    给QT不规则窗口添加阴影
    waveout系列API实现pcm音频播放
    An application has made an attempt to load the C runtime library incorrectly.Please contact the application's support te
  • 原文地址:https://www.cnblogs.com/liming1019/p/1642681.html
Copyright © 2011-2022 走看看