酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

java实现建造者模式练**软件公司要开发一个视频播放软件, 为了给用户的使用提供方便,该软件提供多种界面显示模式,如完整模式、精简模式、记忆模式、网络模式等。在不同的现实模式下主界面的组成元素有所差异, 如在完整模式下将显示菜单、播放列表、主窗口、控制条凳, 在精简模式下只显示主窗口和控制条,在记忆模式下将显示主窗口一控制条、收藏列表等。时使用建造者模式设计该软件。

建造者模式是一种创建型设计模式,它允许你逐步构建复杂对象,而无需在同一个构造函数中包含大量参数。在这个例子中,我们将使用建造者模式来设计一个视频播放软件的不同显示模式。 1. 定义产品类(VideoPlayer) 首先,我们定义一个 `VideoPlayer` 类,它包含所有可能的界面组件。 ```java public class VideoPlayer { private boolean menu; private boolean playlist; private boolean mainWindow; private boolean controlBar; private boolean favoritesList; // 私有构造函数,防止外部直接实例化 private VideoPlayer(Builder builder) { this.menu = builder.menu; this.playlist = builder.playlist; this.mainWindow = builder.mainWindow; this.controlBar = builder.controlBar; this.favoritesList = builder.favoritesList; } // Getters for the components public boolean isMenu() { return menu; } public boolean isPlaylist() { return playlist; } public boolean isMainWindow() { return mainWindow; } public boolean isControlBar() { return controlBar; } public boolean isFavoritesList() { return favoritesList; } // 内部静态类 Builder public static class Builder { private boolean menu; private boolean playlist; private boolean mainWindow; private boolean controlBar; private boolean favoritesList; public Builder() {} public Builder withMenu(boolean menu) { this.menu = menu; return this; } public Builder withPlaylist(boolean playlist) { this.playlist = playlist; return this; } public Builder withMainWindow(boolean mainWindow) { this.mainWindow = mainWindow; return this; } public Builder withControlBar(boolean controlBar) { this.controlBar = controlBar; return this; } public Builder withFavoritesList(boolean favoritesList) { this.favoritesList = favoritesList; return this; } public VideoPlayer build() { return new VideoPlayer(this); } } @Override public String toString() { return "VideoPlayer{" + "menu=" + menu + ", playlist=" + playlist + ", mainWindow=" + mainWindow + ", controlBar=" + controlBar + ", favoritesList=" + favoritesList + '}'; } } ``` 2. 定义具体建造者(DisplayModes) 接下来,我们定义几个具体的建造者类,每个类对应一种显示模式。 ```java public class DisplayModes { public static VideoPlayer fullMode() { return new VideoPlayer.Builder() .withMenu(true) .withPlaylist(true) .withMainWindow(true) .withControlBar(true) .withFavoritesList(false) .build(); } public static VideoPlayer minimalMode() { return new VideoPlayer.Builder() .withMenu(false) .withPlaylist(false) .withMainWindow(true) .withControlBar(true) .withFavoritesList(false) .build(); } public static VideoPlayer memoryMode() { return new VideoPlayer.Builder() .withMenu(false) .withPlaylist(false) .withMainWindow(true) .withControlBar(true) .withFavoritesList(true) .build(); } public static VideoPlayer networkMode() { return new VideoPlayer.Builder() .withMenu(true) .withPlaylist(true) .withMainWindow(true) .withControlBar(true) .withFavoritesList(true) .build(); } } ``` 3. 使用建造者模式 我们在主程序中使用这些建造者来创建不同模式的视频播放器。 ```java public class Main { public static void main(String[] args) { VideoPlayer fullModePlayer = DisplayModes.fullMode(); System.out.println("Full Mode: " + fullModePlayer); VideoPlayer minimalModePlayer = DisplayModes.minimalMode(); System.out.println("Minimal Mode: " + minimalModePlayer); VideoPlayer memoryModePlayer = DisplayModes.memoryMode(); System.out.println("Memory Mode: " + memoryModePlayer); VideoPlayer networkModePlayer = DisplayModes.networkMode(); System.out.println("Network Mode: " + networkModePlayer); } } ``` 运行结果 运行上述代码,你将看到以下输出: ``` Full Mode: VideoPlayer{menu=true, playlist=true, mainWindow=true, controlBar=true, favoritesList=false} Minimal Mode: VideoPlayer{menu=false, playlist=false, mainWindow=true, controlBar=true, favoritesList=false} Memory Mode: VideoPlayer{menu=false, playlist=false, mainWindow=true, controlBar=true, favoritesList=true} Network Mode: VideoPlayer{menu=true, playlist=true, mainWindow=true, controlBar=true, favoritesList=true} ``` 通过这种方式,我们可以轻松地创建不同模式的视频播放器,而不需要在每个地方都重复相同的代码。这正是建造者模式的优势所在。 [2024-11-15 20:37:40 | AI写代码神器 | 1061点数解答]

相关提问