面向对象设计模式课程作业

发布于: 2020 年 06 月 24 日
面向对象设计模式课程作业

作业一

问:请在草稿纸上手写一个单例模式的实现代码,拍照提交作业。

作业二

问:请用组合设计模式编写程序,打印输出图 1 的窗口,窗口组件的树结构如图 2 所示,打印输出示例参考图 3。

package com.qiangjun;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 窗口元素
*
* @author leven
*/
public class WindowElement {
/**
* 元素名称
*/
private String name;
/**
* 元素类型
*/
private String type;
/**
* 子元素
*/
private List<WindowElement> children;
public WindowElement(String name, String type) {
this.name = name;
this.type = type;
children = new ArrayList<>();
}
public void addWindowElement(WindowElement windowElement) {
this.children.add(windowElement);
}
public void addWindowElements(WindowElement... windowElement){
this.children.addAll(Arrays.asList(windowElement));
}
public List<WindowElement> getChildren() {
return this.children;
}
public String print() {
return "print " + this.type + "(" + this.name + ")";
}
}

package com.qiangjun;
/**
* 组合模式
* @author leven
*/
public class CompositePatternDemo {
public static void main(String[] args) {
// create some windowElement
WindowElement winForm = new WindowElement("window窗口","WinForm");
WindowElement picture = new WindowElement("LOGO图片","Picture");
WindowElement login = new WindowElement("登录","Button");
WindowElement register = new WindowElement("注册","Button");
WindowElement frame = new WindowElement("FRAME1","Frame");
WindowElement username = new WindowElement("用户名","Label");
WindowElement textBox = new WindowElement("文本框","TextBox");
WindowElement passwordLabel = new WindowElement("密码","Label");
WindowElement passwordBox = new WindowElement("密码框","PasswordBox");
WindowElement checkBox = new WindowElement("复选框","CheckBox");
WindowElement remember = new WindowElement("记住用户名","TextBox");
WindowElement forgotPassword = new WindowElement("忘记密码","LinkLabel");
// set children
winForm.addWindowElements(picture,login,register,frame);
frame.addWindowElements(username,textBox,passwordLabel,passwordBox,checkBox,remember,forgotPassword);
//print window
System.out.println(winForm.print());
for (WindowElement windowElement : winForm.getChildren()) {
System.out.println(windowElement.print());
windowElement.getChildren().forEach(element -> {
System.out.println(element.print());
});
}
}
}

发布于: 2020 年 06 月 24 日 阅读数: 13
用户头像

行下一首歌

关注

还未添加个人签名 2017.10.30 加入

半壁山房待明月,一盏清茗酬知音。

评论

发布
暂无评论
面向对象设计模式课程作业