GOF——建造者模式

将复杂的类, 拆分成简单的类,进行创建.

/**
 * 建造者模式
 */
public class Builder {
    public static void main(String[] args) {
        HumanDirector director = new SmartHumanDirector();
        Human human = director.createHuman(new SmartHuman());
        System.out.println(human.toString());

    }
}

interface HumanDirector {

    Human createHuman(HumanBuilder builder);

}

class SmartHumanDirector implements HumanDirector {
    @Override
    public Human createHuman(HumanBuilder builder) {
        return new Human(builder.buildHead(), builder.buildBody(), builder.buildHand(), builder.buildFoot());
    }
}

interface HumanBuilder {
    Head buildHead();

    Body buildBody();

    Hand buildHand();

    Foot buildFoot();
}

class SmartHuman implements HumanBuilder {

    @Override
    public Head buildHead() {
        return new Head("智商250");
    }

    @Override
    public Body buildBody() {
        return new Body("身高185");
    }

    @Override
    public Hand buildHand() {
        return new Hand("左手", "右手");
    }

    @Override
    public Foot buildFoot() {
        return new Foot("左脚", "右脚");
    }

}

class Human {
    private Head head;
    private Body body;
    private Hand hand;
    private Foot foot;

    public Human() {
    }

    public Human(Head head, Body body, Hand hand, Foot foot) {
        this.head = head;
        this.body = body;
        this.hand = hand;
        this.foot = foot;
    }

    public Head getHead() {
        return head;
    }

    public void setHead(Head head) {
        this.head = head;
    }

    public Body getBody() {
        return body;
    }

    public void setBody(Body body) {
        this.body = body;
    }

    public Hand getHand() {
        return hand;
    }

    public void setHand(Hand hand) {
        this.hand = hand;
    }

    public Foot getFoot() {
        return foot;
    }

    public void setFoot(Foot foot) {
        this.foot = foot;
    }

    @Override
    public String toString() {
        return "Human{" +
                "head=" + head +
                ", body=" + body +
                ", hand=" + hand +
                ", foot=" + foot +
                '}';
    }
}

class Head {
    private String iq;

    public Head(String iq) {
        this.iq = iq;
    }

    public String getIq() {
        return iq;
    }

    public void setIq(String iq) {
        this.iq = iq;
    }

    @Override
    public String toString() {
        return "Head{" +
                "iq='" + iq + '\'' +
                '}';
    }
}

class Body {
    private String length;//身体长......

    public Body(String length) {
        this.length = length;
    }

    public String getLength() {
        return length;
    }

    public void setLength(String length) {
        this.length = length;
    }

    @Override
    public String toString() {
        return "Body{" +
                "length='" + length + '\'' +
                '}';
    }
}

class Hand {
    private String left;
    private String right;

    public Hand(String left, String right) {
        this.left = left;
        this.right = right;
    }

    public String getLeft() {
        return left;
    }

    public void setLeft(String left) {
        this.left = left;
    }

    public String getRight() {
        return right;
    }

    public void setRight(String right) {
        this.right = right;
    }

    @Override
    public String toString() {
        return "Hand{" +
                "left='" + left + '\'' +
                ", right='" + right + '\'' +
                '}';
    }
}

class Foot {
    private String left;
    private String right;

    public Foot(String left, String right) {
        this.left = left;
        this.right = right;
    }

    public String getLeft() {
        return left;
    }

    public void setLeft(String left) {
        this.left = left;
    }

    @Override
    public String toString() {
        return "Foot{" +
                "left='" + left + '\'' +
                ", right='" + right + '\'' +
                '}';
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值