第三周作业

发布于: 2020 年 06 月 22 日
第三周作业

作业一:

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

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

输出结果:

+print WinForm (WINDOW窗口)
-print Picture(Logo图片)
-print Button(登录)
-print Button(注册)
+print Frame(FRAME1)
-print Lable(用户名)
-print TextBox(文本框)
-print Lable(密码)
-print PasswordBox(密码框)
-print CheckBox(复选框)
-print TextBox(记住用户名)
-print LinkLable(忘记密码)

执行方法:

public class Client {
public static void main(String[] args){
Composite window = new Composite("print WinForm (WINDOW窗口)");
Leaf picture = new Leaf("print Picture(Logo图片)");
Leaf loginButton = new Leaf("print Button(登录)");
Leaf registerButton = new Leaf("print Button(注册)");
Composite fream1 = new Composite("print Frame(FRAME1)");
Leaf userNameLable = new Leaf("print Lable(用户名)");
Leaf textBox = new Leaf("print TextBox(文本框)");
Leaf passwordLable = new Leaf("print Lable(密码)");
Leaf passwordBox = new Leaf("print PasswordBox(密码框)");
Leaf checkBox = new Leaf("print CheckBox(复选框)");
Leaf rememberUserNametextBox = new Leaf("print TextBox(记住用户名)");
Leaf forgetLinkLable = new Leaf("print LinkLable(忘记密码)");
window.addChild(picture);
window.addChild(loginButton);
window.addChild(registerButton);
window.addChild(fream1);
fream1.addChild(userNameLable);
fream1.addChild(textBox);
fream1.addChild(passwordLable);
fream1.addChild(passwordBox);
fream1.addChild(checkBox);
fream1.addChild(rememberUserNametextBox);
fream1.addChild(forgetLinkLable);
String prefix = " ";
window.printComponent(prefix);
}
}

组件的抽象接口

/**
* 组件抽象类
* @author: songdewei
* @date: 2020/6/22
*/
public interface Component {
/**
* 打印组件信息
* @param prefix 前缀
*/
void printComponent(String prefix);
}

组合的实现类

public class Composite implements Component{
/**
* 节点名称
*/
private String name;
/**
* 子节点名称
*/
private List<Component> children = new ArrayList<>();
public Composite(String name) {
this.name = name;
}
/**
* 增加一个子组件
* @param child 子构件对象
*/
public void addChild(Component child){
children.add(child);
}
@Override
public void printComponent(String prefix) {
System.out.println(prefix + "+" + name);
if(null != children){
for(Component c : children){
c.printComponent(prefix + prefix);
}
}
}
}

叶子节点的实现类

/**
* 叶子节点
* @author: songdewei
* @date: 2020/6/22
*/
public class Leaf implements Component{
/**
* 叶子节点名称
*/
private String name;
public Leaf(String name){
this.name = name;
}
@Override
public void printComponent(String preStr) {
System.out.println(preStr + "-" + name);
}
}

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

戴维斯

关注

还未添加个人签名 2018.08.24 加入

还未添加个人简介

评论

发布
暂无评论
第三周作业