Java 建造者模式:打造多模式视频播放软件界面
以下是一个使用 Java 实现的视频播放软件界面建造者模式的示例代码: ```java import java.util.ArrayList; import java.util.List; // 视频播放软件界面的组成元素枚举 enum VideoComponent { MENU, PLAYLIST, MAIN_WINDOW, CONTROL_BAR, FAVORITE_LIST } // 视频播放界面产品类 class VideoPlayerInterface { private List<VideoComponent> components; VideoPlayerInterface() { components = new ArrayList<>(); } public void addComponent(VideoComponent component) { components.add(component); } public void showInterface() { System.out.println("当前界面包含以下元素:"); for (VideoComponent component : components) { System.out.println(component); } } } // 视频播放界面建造者抽象类 abstract class VideoPlayerInterfaceBuilder { protected VideoPlayerInterface videoPlayerInterface; public VideoPlayerInterface getVideoPlayerInterface() { return videoPlayerInterface; } public abstract void buildMainWindow(); public abstract void buildControlBar(); public abstract void buildMenu(); public abstract void buildPlaylist(); public abstract void buildFavoriteList(); } // 完整模式建造者 class FullModeBuilder extends VideoPlayerInterfaceBuilder { public FullModeBuilder() { videoPlayerInterface = new VideoPlayerInterface(); } @Override public void buildMainWindow() { videoPlayerInterface.addComponent(VideoComponent.MAIN_WINDOW); } @Override public void buildControlBar() { videoPlayerInterface.addComponent(VideoComponent.CONTROL_BAR); } @Override public void buildMenu() { videoPlayerInterface.addComponent(VideoComponent.MENU); } @Override public void buildPlaylist() { videoPlayerInterface.addComponent(VideoComponent.PLAYLIST); } @Override public void buildFavoriteList() { // 完整模式下不包含收藏列表 } } // 精简模式建造者 class LiteModeBuilder extends VideoPlayerInterfaceBuilder { public LiteModeBuilder() { videoPlayerInterface = new VideoPlayerInterface(); } @Override public void buildMainWindow() { videoPlayerInterface.addComponent(VideoComponent.MAIN_WINDOW); } @Override public void buildControlBar() { videoPlayerInterface.addComponent(VideoComponent.CONTROL_BAR); } @Override public void buildMenu() { // 精简模式下不包含菜单 } @Override public void buildPlaylist() { // 精简模式下不包含播放列表 } @Override public void buildFavoriteList() { // 精简模式下不包含收藏列表 } } // 记忆模式建造者 class MemoryModeBuilder extends VideoPlayerInterfaceBuilder { public MemoryModeBuilder() { videoPlayerInterface = new VideoPlayerInterface(); } @Override public void buildMainWindow() { videoPlayerInterface.addComponent(VideoComponent.MAIN_WINDOW); } @Override public void buildControlBar() { videoPlayerInterface.addComponent(VideoComponent.CONTROL_BAR); } @Override public void buildMenu() { // 记忆模式下不包含菜单 } @Override public void buildPlaylist() { // 记忆模式下不包含播放列表 } @Override public void buildFavoriteList() { videoPlayerInterface.addComponent(VideoComponent.FAVORITE_LIST); } } // 导演类,用于指挥建造者创建产品 class Director { public void construct(VideoPlayerInterfaceBuilder builder) { builder.buildMainWindow(); builder.buildControlBar(); builder.buildMenu(); builder.buildPlaylist(); builder.buildFavoriteList(); } } public class VideoPlayerBuilderPattern { public static void main(String[] args) { Director director = new Director(); VideoPlayerInterfaceBuilder fullModeBuilder = new FullModeBuilder(); director.construct(fullModeBuilder); VideoPlayerInterface fullModeInterface = fullModeBuilder.getVideoPlayerInterface(); fullModeInterface.showInterface(); VideoPlayerInterfaceBuilder liteModeBuilder = new LiteModeBuilder(); director.construct(liteModeBuilder); VideoPlayerInterface liteModeInterface = liteModeBuilder.getVideoPlayerInterface(); liteModeInterface.showInterface(); VideoPlayerInterfaceBuilder memoryModeBuilder = new MemoryModeBuilder(); director.construct(memoryModeBuilder); VideoPlayerInterface memoryModeInterface = memoryModeBuilder.getVideoPlayerInterface(); memoryModeInterface.showInterface(); } } ``` 在上述代码中,我们定义了视频播放界面的组成元素枚举,创建了视频播放界面产品类、不同模式的建造者类以及导演类来控制建造过程。在`main`方法中,通过不同的建造者创建不同模式的视频播放界面,并展示其包含的元素。 ######[AI写代码神器 | 1155点数解答 | 2024-11-15 20:38:39]
- Java JFrame 实现多界面跳转:含登录、注册及个人信息管理功能(讯飞星火 | 503点数解答 | 2024-06-06 23:49:29)415
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)436
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)335
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1229
- 模式迁移思想下:Python 实现 CD 播放器播放管理全解析(字节豆包 | 639点数解答 | 2024-08-26 06:31:50)259
- 用C语言结合模式迁移思想,实现超实用CD播放器播放管理!(字节豆包 | 948点数解答 | 2024-08-26 06:35:41)253
- 模式迁移思想下:C语言实现CD播放器播放管理及开发注意要点(字节豆包 | 1141点数解答 | 2025-08-08 14:18:01)82
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)345
- 手把手教你搭建支持多媒体、带管理功能的简约网页聊天室! (GPT | 1100点数解答 | 2024-11-21 20:04:06)166
- 简约网页版聊天室框架:支持多媒体发送与多功能管理(GPT | 922点数解答 | 2024-11-21 20:16:52)158
- 全套代码框架:用B4A与PHP打造手机多数据远程备份及GPS轨迹记录系统,附开发避雷指南 (DeepSeek | 1130点数解答 | 2025-08-19 19:40:09)160
- 超详细!B4A客户端与PHP服务端实现手机数据远程备份及GPS轨迹记录全代码揭秘(阿里通义 | 1773点数解答 | 2025-08-19 19:41:05)158