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

  • 相关阅读:
    排序算法(2)-冒泡排序及优化
    [转]Java泛型详解
    [转]Java泛型详解
    02-机器学习_(knn分类算法与应用)
    01-机器学习_(python数据类型详解)
    流量运营项目说明
    数据仓库星型模型vs雪花模型
    数据仓库命名规范
    数据仓库建模
    数据仓库
  • 原文地址:https://www.cnblogs.com/liming1019/p/1642681.html
Copyright © 2011-2022 走看看