设计模式之建造者模式简明示例

建造者模式将一个复杂对象的创建和它的表示分离,使用同样的创建过程可以创建不同的表示

应用实例

在Java中,建造者模式是一种常见的设计模式,StringBuilder以及okhttp3.Request都应用了建造者模式:

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
        .url("http://www.baidu.com")
        .build();

实现

我们将要实现一个Human类的建造者模式实现。

首先创建Human类

public  class Human {
    private String name; private int age; private int weight; private int height; //-----------Setter and Getter-------------------- public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } //-----------Setter and Getter-------------------- @Override public String toString(){ return getName() + " 的年龄是 " + getAge() + " 的体重是 " + getWeight() + " 的身高是 " +getHeight(); } } 

创建Builder接口

public interface Builder {
    Builder setAge(int age); Builder setName(String name); Builder setWeight(int weight); Builder setHeight(int height); Human build(); } 

创建ConcreteBuilder类,使用这个类可以构建Human对象

public class ConcreteBuilder implements Builder { private Human human; @Override public Builder setAge(int age) { this.human.setAge(age); return this; } @Override public Builder setName(String name) { this.human.setName(name); return this; } @Override public Builder setWeight(int weight) { this.human.setWeight(weight); return this; } @Override public Builder setHeight(int height) { this.human.setHeight(height); return this; } @Override public Human build() { return this.human; } public ConcreteBuilder(){ this.human = new Human(); } } 

使用演示

public class BuilderDemo {
    public static void main(String[] args){ Human human = new ConcreteBuilder() .setAge(21) .setName("Amos") .setHeight(176) .setWeight(130) .build(); System.out.println(human); } } 

它的输出为:

Amos  的年龄是  21  的体重是  130  的身高是 176

转载于:https://www.cnblogs.com/AmosH/p/10219096.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值