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

  • 相关阅读:
    当import的模块内容发生变化时,对此模块进行重新加载(刷新)
    使用python的ctypes库实现内存的动态申请和释放
    【转载】实现博客园图片的可放大功能
    使用tqdm实现下载文件进度条
    pytest参数化的两种方式
    Jmeter之Bean shell使用-常用内置变量
    JMeter之Ramp-up Period(in seconds)说明
    Jmeter性能测试基础
    接口测试基础
    JMeter做http接口功能测试
  • 原文地址:https://www.cnblogs.com/liming1019/p/1642681.html
Copyright © 2011-2022 走看看