美文网首页
创建型模式:06-建造者模式

创建型模式:06-建造者模式

作者: 综合楼 | 来源:发表于2021-06-11 20:31 被阅读0次

类图

image.png

示例代码:

image.png
import com.zhs.design.builder.demo1.Player;
--------------------------------------------------------------
public abstract class PlayerBuilder {
    private Player player = new Player();
    public abstract void buildMenu();
    public abstract void buildPlayList();
    public abstract void buildMainWindow();
    public abstract void buildProgressBar();

    public Player getPlayer() {
        return player;
    }
}
--------------------------------------------------------------
public class CompletePlayerBuilder extends PlayerBuilder {
    @Override
    public void buildMenu() {
        this.getPlayer().setMenu("完整模式菜单");
    }

    @Override
    public void buildPlayList() {
        this.getPlayer().setPlayList("完整模式播放列表");
    }

    @Override
    public void buildMainWindow() {
        this.getPlayer().setMainWindow("完整模式主窗口");
    }

    @Override
    public void buildProgressBar() {
        this.getPlayer().setProgressBar("完整模式进度条");
    }
}
--------------------------------------------------------------
public class MemoryPlayerBuilder extends PlayerBuilder {
    @Override
    public void buildMenu() {
        this.getPlayer().setMenu("记忆模式菜单");
    }

    @Override
    public void buildPlayList() {
        this.getPlayer().setPlayList("记忆模式播放列表");
    }

    @Override
    public void buildMainWindow() {
        this.getPlayer().setMainWindow("记忆模式主窗口");
    }

    @Override
    public void buildProgressBar() {
        this.getPlayer().setProgressBar("记忆模式进度条");
    }
}
--------------------------------------------------------------
public class SimplePlayerBuilder extends PlayerBuilder {
    @Override
    public void buildMenu() {
        this.getPlayer().setMenu("精简模式菜单");
    }

    @Override
    public void buildPlayList() {
        this.getPlayer().setPlayList("精简模式播放列表");
    }

    @Override
    public void buildMainWindow() {
        this.getPlayer().setMainWindow("精简模式主窗口");
    }

    @Override
    public void buildProgressBar() {
        this.getPlayer().setProgressBar("精简模式进度条");
    }
}
import lombok.Data;

@Data
public class Player {
    private String menu;
    private String playList;
    private String mainWindow;
    private String progressBar;
}
public class PlayerDirector {
    public Player concrete(PlayerBuilder playerBuilder){
        playerBuilder.buildMenu();
        playerBuilder.buildPlayList();
        playerBuilder.buildMainWindow();
        playerBuilder.buildProgressBar();
        return playerBuilder.getPlayer();
    }
}
public class Main {
    /*
    * Sunny软件公司欲开发一个视频播放软件,为了给用户使用提供方便,该播放软件提供多
    种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式
    下主界面的组成元素有所差异,如在完整模式下将显示菜单、播放列表、主窗口、控制
    条等,在精简模式下只显示主窗口和控制条,而在记忆模式下将显示主窗口、控制条、
    收藏列表等。尝试使用建造者模式设计该软件。*/
    public static void main(String[] args) {
        PlayerDirector playerDirector = new PlayerDirector();
        Player player = playerDirector.concrete(new MemoryPlayerBuilder());
        System.out.println(player.toString());
    }
}

特殊建造者模式(构建器)

public class People {
    private String color;
    private Integer old;

    private People(Builder builder) {
        this.color = builder.color;
        this.old = builder.old;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static class Builder {
        private String color;
        private Integer old;

        public Builder color(String color) {
            this.color = color;
            return this;
        }


        public Builder old(Integer old) {
            this.old = old;
            return this;
        }

        public People build() {
            return new People(this);
        }
    }

    @Override
    public String toString() {
        return "People{" +
                "color='" + color + '\'' +
                ", old=" + old +
                '}';
    }
}
public class Main {
    public static void main(String[] args) {
        People people = People.builder().color("red").old(2).build();
        System.out.println(people.toString());
    }
}

相关文章

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

  • 设计模式-构建者模式

    概念 建造者模式(英:Builder Pattern)是一种创建型设计模式,又名:生成器模式。GOF 给建造者模式...

  • PHP常用设计模式

    # 创建型 单例模式 工厂模式 工厂抽象模式 原型模式 建造者模式 # 结构型 # 行为型 # 3.注册模式 # ...

  • 23天学习23种设计模式——建造者模式

    是什么——什么是建造者模式 建造者模式(Builder Pattern),是一种对象创建型设计模式。它将一个复杂对...

  • spring 设计模式篇(前)

    设计模式俗称:套路 一、spring常见设计模式 (23种设计模式) 创建型:工厂方法模式、抽象工厂模式、建造者...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 创建型模式:建造者模式

    个人公众号原文:创建型模式:建造者模式 五大创建型模式之四:建造者模式。 简介 姓名 :建造者模式 英文名 :Bu...

  • 23种设计模式

    创建型 工厂模式 ( 工厂方法模式, 抽象工厂模式, 建造者模式 ) 单例模式 原型模式 结构型 适配器模式 装饰...

  • 创建型模式:06-建造者模式

    类图 示例代码: 特殊建造者模式(构建器)

  • 建造者模式(创建型)

    建造者模式[https://www.runoob.com/design-pattern/builder-patte...

网友评论

      本文标题:创建型模式:06-建造者模式

      本文链接:https://www.haomeiwen.com/subject/yacceltx.html