组件模式
发布于: 2020 年 10 月 04 日
根据登录窗口功能,使用组合设计模式编写程序,打印输出图 。
多用于处理树状结构数据,将单个节点和复杂节点相关属性或方法抽象出来,复杂数据分解成一个一个节点简单化。
package com.hy.learn.设计模式.组合模式;import org.springframework.util.ObjectUtils;import java.util.ArrayList;import java.util.List;/** * @program: learn * @description: 组合模式窗口 * @author: hy * @create: 2020-10-04 21:38 */public abstract class Component { public abstract void print(); public abstract void add(Component c);}class nodeComponent extends Component { private String name; private List<Component> list; public nodeComponent(String name) { this.name = name; } @Override public void print() { System.out.println("print " + name); if (!ObjectUtils.isEmpty(list) ){ for (Component component : list) { component.print(); } } } @Override public void add(Component c) { if( ObjectUtils.isEmpty(list) ) { list = new ArrayList<>(); } list.add(c); } public static void main(String[] args) { Component winForm = new nodeComponent("WinForm(WINDOW窗口)"); Component picture = new nodeComponent("Picture(LOGO图片)"); Component buttonLogin = new nodeComponent("Button(登录)"); Component buttonRegister = new nodeComponent("Button(注册)"); Component frame = new nodeComponent("Frame(FRAME1)"); Component label1 = new nodeComponent("Label(用户名)"); Component textBoxUserName = new nodeComponent("TextBox(文本框)"); Component label2 = new nodeComponent("Lable(密码)"); Component passwordBox = new nodeComponent("PassWordBox(密码框)"); Component checkbox = new nodeComponent("CheckBox(复选框)"); Component textBoxRemember = new nodeComponent("TextBox(记住用户名)"); Component linkLabel = new nodeComponent("LinkLabel(忘记密码)"); frame.add(label1); frame.add(textBoxUserName); frame.add(label2); frame.add(passwordBox); frame.add(checkbox); frame.add(textBoxRemember); frame.add(linkLabel); winForm.add(picture); winForm.add(buttonLogin); winForm.add(buttonRegister); winForm.add(frame); winForm.print(); }}
划线
评论
复制
发布于: 2020 年 10 月 04 日阅读数: 30
积极&丧
关注
还未添加个人签名 2019.02.13 加入
还未添加个人简介
评论