手机版
你好,游客 登录 注册
背景:
阅读新闻

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

[日期:2019-01-13] 来源:Linux社区  作者:AmosH [字体: ]

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

应用实例

在Java中,建造者模式是一种常见的设计模式,StringBuilder以及okhttp3.Request都应用了建造者模式:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
        .url("https://www.linuxidc.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

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-01/156334.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款