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

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`方法中,通过不同的建造者创建不同模式的视频播放界面,并展示其包含的元素。 [2024-11-15 20:38:39 | AI写代码神器 | 1155点数解答]

相关提问