建造者模式-笔记

建造者模式一

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ComplexClass {
    private String variableA;
    private String variableB;
    private String variableC;

    public static class Builder {
        private ComplexClass complexClass = new ComplexClass();
        
        public Builder(String variableA, String variableB, String variableC) {
            complexClass.variableA = variableA;
            complexClass.variableB = variableB;
            complexClass.variableC = variableC;
        }       
        
        public Builder variableA(String variableA) {
            complexClass.variableA = variableA;
            return this;
        }   
        
        public Builder variableB(String variableAB) {
            complexClass.variableB = variableB;
            return this;
        }   
        
        public Builder variableC(String variableC) {
            complexClass.variableC = variableC;
            return this;
        }   

        public ComplexClass build() {
            return complexClass;
        }
    }   
}

建造者模式二

public class ShouQiang {
    private int length;

    public ShouQiang(int length) {
        this.length = length;
    }

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

    public void fire() {
        System.out.println("射程" + this.length + "米的手枪开火了!");
    }
}

public class ShouLiuDan {
    private int length;

    public ShouLiuDan(int length) {
        this.length = length;
    }

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

    public void fire() {
        System.out.println("爆炸范围" + this.length + "米的手榴弹开火了!");
    }
}

public class DaPao {
    private int length;

    public DaPao(int length) {
        this.length = length;
    }

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

    public void fire() {
        System.out.println("射程" + this.length + "米的大炮开火了!");
    }
}

public class Weapon {

    ShouQiang shouQiang;

    ShouLiuDan shouLiuDan;

    DaPao daPao;

    public void fire() {
        System.out.println("战斗开始!!!");
        shouLiuDan.fire();
        shouLiuDan.fire();
        daPao.fire();
        System.out.println("战斗结束了,我们胜利啦!!!");
    }

}

public interface WarFactory {

    void setShouQiang(int length);

    void setShouliuDan(int length);

    void setDaPao(int length);

    Weapon getWeapon();
}

public class SmallWar implements WarFactory {

    private Weapon weapon = new Weapon();
    @Override
    public void setShouQiang(int length) {
        weapon.shouQiang = new ShouQiang(length);
    }

    @Override
    public void setShouliuDan(int length) {
        weapon.shouLiuDan = new ShouLiuDan(length);
    }

    @Override
    public void setDaPao(int length) {
        weapon.daPao = new DaPao(length);
    }

    @Override
    public Weapon getWeapon() {
        return weapon;
    }
}

public interface App {

    public static void main(String[] args) {
        WarFactory war = new SmallWar();
        war.setShouQiang(100);
        war.setShouliuDan(1000);
        war.setDaPao(10000);
        final Weapon weapon = war.getWeapon();
        weapon.fire();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值