第三周用组合设计模式编写程序

用户头像
Geek_fabd84
关注
发布于: 2020 年 10 月 02 日



package com;
import java.util.ArrayList;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 17:40
******************************/
public abstract class Component {
private String name;
private java.util.List<Component> components = new ArrayList<Component>();
public Component(String name) {
this.name = name;
}
public void update() {
paint();
for(Component component : components) {
component.update();
}
}
public abstract void paint();
public void addComp(Component component) {
this.components.add(component);
}
public String getName() {
return name;
}
}



package com;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 18:17
******************************/
public class Window extends Component {
public Window(String name) {
super(name);
}
public void paint() {
System.out.println("print WinForm("+this.getName()+")");
}
}



package com;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 18:21
******************************/
public class Button extends Component {
public Button(String name) {
super(name);
}
public void paint() {
System.out.println("print Button("+this.getName()+")");
}
}



package com;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 18:19
******************************/
public class Picture extends Component {
public Picture(String name) {
super(name);
}
public void paint() {
System.out.println("print Picture("+this.getName()+")");
}
}



package com;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 18:26
******************************/
public class Frame extends Component {
public Frame(String name) {
super(name);
}
public void paint() {
System.out.println("print Frame("+this.getName()+")");
}
}



package com;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 18:27
******************************/
public class Label extends Component {
public Label(String name) {
super(name);
}
public void paint() {
System.out.println("print Label("+this.getName()+")");
}
}



package com;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 18:27
******************************/
public class TextBox extends Component {
public TextBox(String name) {
super(name);
}
public void paint() {
System.out.println("print TextBox("+this.getName()+")");
}
}



package com;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 18:28
******************************/
public class PasswordBox extends Component {
public PasswordBox(String name) {
super(name);
}
public void paint() {
System.out.println("print PasswordBox("+this.getName()+")");
}
}



package com;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 18:29
******************************/
public class CheckBox extends Component {
public CheckBox(String name) {
super(name);
}
public void paint() {
System.out.println("print CheckBox("+this.getName()+")");
}
}



package com;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 18:30
******************************/
public class LinkLabel extends Label {
private String link;
public LinkLabel(String name,String link) {
super(name);
this.link = link;
}
public void paint() {
System.out.println("print Label("+this.getName()+")");
}
}



package com;
/******************************
* 用途说明:
* 作者姓名: chenshijie
* 创建时间: 2020/10/02 18:31
******************************/
public class Test {
public static void main(String[] args) {
Window window = new Window("WINDOW窗口");
Picture picture = new Picture("LOGO图片");
Button loginButton = new Button("登录");
Button regButton = new Button("注册");
Frame frame = new Frame("FRAME1");
Label nameLabel = new Label("用户名");
TextBox textBox = new TextBox("文本框");
Label passLabel = new Label("密码");
PasswordBox passwordBox = new PasswordBox("密码框");
CheckBox checkBox = new CheckBox("复选框");
TextBox remember = new TextBox("记住用户名");
LinkLabel linkLabel = new LinkLabel("忘记密码","www.google.com");
window.addComp(picture);
window.addComp(loginButton);
window.addComp(regButton);
window.addComp(frame);
frame.addComp(nameLabel);
frame.addComp(textBox);
frame.addComp(passLabel);
frame.addComp(passwordBox);
frame.addComp(checkBox);
frame.addComp(remember);
frame.addComp(linkLabel);
window.update();
}
}

窗口组件的树结构如下所示。

print WinForm(WINDOW窗口)

print Picture(LOGO图片)

print Button(登录)

print Button(注册)

print Frame(FRAME1)

print Label(用户名)

print TextBox(文本框)

print Label(密码)

print PasswordBox(密码框)

print CheckBox(复选框)

print TextBox(记住用户名)

print Label(忘记密码)



用户头像

Geek_fabd84

关注

还未添加个人签名 2019.06.30 加入

还未添加个人简介

评论

发布
暂无评论
第三周用组合设计模式编写程序