建造者模式

本文介绍了建造者模式的概念,通过一个UML图和代码示例展示了如何使用建造者模式来创建不同类型的抽象人,如瘦小人。建造者模式将对象的构建和表示分离,使得创建过程更灵活,同时隐藏了构建细节。通过指挥者类,用户可以方便地创建不同类型的‘人’,无需关注具体构建步骤。
摘要由CSDN通过智能技术生成

建造者模式

定义

将一个复杂对象的构建和他的表示分离,使得同样的构建过程可以创建不同的表示。
主要用于创建一些复杂的对象,这些对象内部构件间的建造顺序是稳定的,但对象内部的构建通常面临着复杂的变化。
如果使用建造者模式,用户就只需指定需要建造的类型就可以得到它们,而建造的过程和细节被隐藏了。

UML图

在这里插入图片描述

用例

抽象的建造人类

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 extends PersonBuilder{
      @Override
      public void buildHead(){
          g.DrawEllipse(p, 50, 20, 30, 30);
      }
      @Override
      public void buildBody(){
          g.DrawRectangle(p, 60, 50, 10, 50);
      }
      @Override
      public void buildArmLeft(){
          g.DrawLine(p, 60, 50, 40, 100);
      }
      @Override
      public void buildArmRight(){
          g.DrawLine(p, 70, 50, 90, 100);
      }
      @Override
      public void buildLegLeft(){
          g.DrawLine(p, 60, 100, 45, 150);
      }
      @Override
      public void buildLegRight(){
          g.DrawLine(p, 70, 100, 85, 150);
      }
  }

指挥者

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();
     }
 }

客户端

Pen p = new Pen(Color.Yellow);
PersonThinBuilder ptb = new PersonThinBuilder(pictureBox1.CreateGraphics(), p);
PersonDirector pdThin = new PersonDirector(ptb);
pdThin.CreatePerson();

PersonFatBuilder pfb = new PersonFatBuilder(pictureBox2.CreateGraphics(), p);
PersonDirector pdFat = new PersonDirector(pfb);
pdFat.CreatePerson();

UML图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值