大话设计模式-建造者模式

1. 建造接口类:画小人

package com.hj.designPattern.build;

public interface IBuildPerson {
    void drawHead();
    void drawBody();
    void drawArms();
    void drawLegs();
    // 建造结果
    void resultPerson();
}

 2. 建造的产品:人

package com.hj.designPattern.build;

import lombok.Data;

@Data
public class Person {
    private String head;
    private String body;
    private String arms;
    private String legs;

    public void result(){
        System.out.println(getHead()+getBody()+getArms()+getLegs());
    }
}

3. 具体建造类:画胖人

package com.hj.designPattern.build;

public class BuildFatPerson implements IBuildPerson {
    private Person person = new Person();
    BuildFatPerson() {
    }
    @Override
    public void drawHead() {
        person.setHead("大头");
        System.out.println("第一步画头");
    }

    @Override
    public void drawBody() {
        person.setBody("强壮的身体");
        System.out.println("第二步画身体");
    }

    @Override
    public void drawArms() {
        person.setArms("粗壮的胳膊");
        System.out.println("第三步画胳膊");
    }

    @Override
    public void drawLegs() {
        person.setLegs("粗壮的大腿");
        System.out.println("第四步画大腿");
    }

    @Override
    public void resultPerson() {
        person.result();
    }
}

4. 画瘦人

package com.hj.designPattern.build;

public class BuildThinPerson implements IBuildPerson {
    Person person = new Person();
    @Override
    public void drawHead() {
        person.setHead("小头");
        System.out.println("第一步画头");
    }

    @Override
    public void drawBody() {
        person.setBody("瘦小的身体");
        System.out.println("第二步画身体");
    }

    @Override
    public void drawArms() {
        person.setArms("细小的胳膊");
        System.out.println("第三步画胳膊");
    }

    @Override
    public void drawLegs() {
        person.setLegs("细小的腿");
        System.out.println("第四步画大腿");
    }

    @Override
    public void resultPerson() {
        person.result();
    }
}

5. 指挥者,按顺序画各部位:

package com.hj.designPattern.build;

public class Director {
    private IBuildPerson builder;
    Director(IBuildPerson builder){
        this.builder = builder;
    }
    public void direct(){
        builder.drawHead();
        builder.drawBody();
        builder.drawArms();
        builder.drawLegs();
    }

}

6. 测试类

package com.hj.designPattern.build;

public class BuilderTest {
    public static void main(String[] args) {
        IBuildPerson fatPersonBuilder = new BuildFatPerson();
        Director director = new Director(fatPersonBuilder);
        director.direct();
        fatPersonBuilder.resultPerson();

        IBuildPerson thinPersonBuilder = new BuildThinPerson();
        director = new Director(thinPersonBuilder);
        director.direct();
        thinPersonBuilder.resultPerson();
    }
}

7. 运行结果

第一步画头
第二步画身体
第三步画胳膊
第四步画大腿
大头强壮的身体粗壮的胳膊粗壮的大腿
第一步画头
第二步画身体
第三步画胳膊
第四步画大腿
小头瘦小的身体细小的胳膊细小的腿

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值