写点什么

组件模式

用户头像
积极&丧
关注
发布于: 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();
}
}



用户头像

积极&丧

关注

还未添加个人签名 2019.02.13 加入

还未添加个人简介

评论

发布
暂无评论
组件模式